首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C中只执行一次代码

在C中只执行一次代码
EN

Stack Overflow用户
提问于 2015-07-29 14:43:28
回答 3查看 6.2K关注 0票数 1

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

备注:我使用ucos-II。

代码语言:javascript
复制
if (TRUE == Lock)
{
 /*Code to execute one time*/
}

/*The reste of the code*/
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-29 14:48:19

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

代码语言:javascript
复制
static bool once = false;

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

Stack Overflow用户

发布于 2015-07-29 14:48:31

这取决于你什么时候想要做这个检查,以及在哪里。

假设您有一个API,比如

代码语言:javascript
复制
void func(bool flag)
{
   if(flag)
   {
      // Code for only one condition
   }
   else
   {
     //Rest of the code
   }
}

然后,只需传递TRUE或FALSE,就可以确保只执行一次所需的代码。

否则,使用全局变量的方法也是可以的,但是一旦执行了所需的块,就必须取消设置LOCK

代码语言:javascript
复制
if( LOCK == TRUE)
{
   //Execute code
   LOCK = FALSE;
}

希望您的全局变量LOCK初始化为1

注意:

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

票数 1
EN

Stack Overflow用户

发布于 2015-07-29 14:54:27

所以如果你用

代码语言:javascript
复制
if (TRUE == Lock)
{
 /*Code to execute one time*/``
}

锁将永远是真正的严格吗?

所以你需要做

代码语言:javascript
复制
if(Lock == TRUE)
{//code to execute
 Lock = FALSE;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31703772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档