在C中只执行一次代码

  • 本文关键字:一次 代码 执行 ucos
  • 更新时间 :
  • 英文 :


我想只执行一次代码。我使用了一个基于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
}

所以如果你使用

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

Lock永远不会为真,对吗?

所以你需要做

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

取决于您想在何时何地执行此检查。

假设你有一个像

这样的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

注意:

如果您使用的是平面内存系统,那么使用全局变量,所以我们倾向于避免它。如果真的有需要的话是的,我们选择全局变量,否则我们可以像建议的那样使用一些标志在我的第一个方法

相关内容

  • 没有找到相关文章

最新更新