Выполнить код только один раз в C

Я хочу выполнить код только один раз. Я использовал решение, основанное на глобальной вариабельности типа bool. Мой вопрос, это лучшее решение?

Замечание: я использую ucos-II.

if (TRUE == Lock)
{
 /*Code to execute one time*/
}

/*The reste of the code*/

3 ответа

Решение

Простой код с использованием статической переменной.

static bool once = false;

if (once == false)
{
    once = true;
    // do your "once" stuff here
}

Зависит от того, когда вы хотите сделать эту проверку и где.

Допустим, у вас есть API, как

void func(bool flag)
{
   if(flag)
   {
      // Code for only one condition
   }
   else
   {
     //Rest of the code
   }
}

Затем, просто передав TRUE или FALSE, вы можете убедиться, что требуемый код выполняется только один раз.

Иначе ваш подход к наличию глобальной переменной тоже хорошо, но вы должны сбросить LOCK как только требуемый блок выполнен

if( LOCK == TRUE)
{
   //Execute code
   LOCK = FALSE;
}

Надеюсь, у вас есть глобальная переменная LOCK инициализирован в 1,

НОТА:

Если вы работаете в системах с плоской памятью, всегда опасно иметь глобальные переменные, поэтому мы стараемся избегать этого. Если есть реальная потребность, тогда да, мы идем к глобальной переменной, иначе мы можем использовать некоторый флаг, как предложено в моем первом подходе

Так что, если вы просто используете

if (TRUE == Lock)
{
 /*Code to execute one time*/``
}

Лок когда-нибудь станет правдой?

так что вам нужно сделать

if(Lock == TRUE)
{//code to execute
 Lock = FALSE;
}
Другие вопросы по тегам