我只想执行一次代码。我使用了一个基于bool类型的全局变量的解决方案。我的问题,这是最好的解决办法吗?
备注:我使用ucos-II。
if (TRUE == Lock)
{
/*Code to execute one time*/
}
/*The reste of the code*/发布于 2015-07-29 14:48:19
使用静态变量的简单代码。
static bool once = false;
if (once == false)
{
once = true;
// do your "once" stuff here
}发布于 2015-07-29 14:48:31
这取决于你什么时候想要做这个检查,以及在哪里。
假设您有一个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。
注意:
如果您在一个平面内存系统中,拥有全局变量总是很危险的,所以我们倾向于避免它。如果有真正的需要,那么是的,我们选择全局变量,否则,我们可以使用我在第一种方法中建议的一些标志。
发布于 2015-07-29 14:54:27
所以如果你用
if (TRUE == Lock)
{
/*Code to execute one time*/``
}锁将永远是真正的严格吗?
所以你需要做
if(Lock == TRUE)
{//code to execute
Lock = FALSE;
}https://stackoverflow.com/questions/31703772
复制相似问题