在 C 中只执行一次代码

Execute a code only one time in C

我只想执行一次代码。我使用了基于 bool 类型的全局变量的解决方案。我的问题,这是最好的解决方案吗?

备注:我用的是ucos-II

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

/*The reste of the code*/

使用静态变量的简单代码。

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 you are on a flat memory systems it is always dangerous to have global variables so we tend to avoid it. If there is a real need then yes we go for global variable else we can use some flag as suggested in my first approach

所以如果你只是使用

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

锁永远是真的吧?

所以你需要做

if(Lock == TRUE)
{//code to execute
 Lock = FALSE;
}