我只想执行一次代码。我使用了一个基于全局变量bool类型的解决方案。我的问题,这是最好的解决方案吗?
备注:我使用的是ucos-II。
if (TRUE == Lock)
{
/*Code to execute one time*/
}
/*The reste of the code*/
答案 0 :(得分:2)
使用静态变量的简单代码。
static bool once = false;
if (once == false)
{
once = true;
// do your "once" stuff here
}
答案 1 :(得分:1)
取决于您何时进行此项检查以及在哪里。
我们假设你有一个类似
的APIvoid 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;
}