Выполнить код только один раз в 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;
}