在C中只执行一次代码

时间:2015-07-29 14:43:28

标签: c ucos

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

备注:我使用的是ucos-II。

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

/*The reste of the code*/

3 个答案:

答案 0 :(得分:2)

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

static bool once = false;

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

答案 1 :(得分:1)

取决于您何时进行此项检查以及在哪里。

我们假设你有一个类似

的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

注:

  

如果你在平板存储系统上,那么它总是很危险   全局变量因此我们倾向于避免它。如果有真正的需要那么   是的,我们去全局变量,否则我们可以按照建议使用一些标志   在我的第一个方法

答案 2 :(得分:1)

所以,如果你只是使用

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

锁定永远是真的吗?

所以你需要做

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