在 C 中只执行一次代码
Execute a code only one time in C
我只想执行一次代码。我使用了基于 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
}
取决于您想何时何地进行此检查。
假设你有一个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
。
注意:
If you are on a flat memory systems it is always dangerous to have
global variables so we tend to avoid it. If there is a real need then
yes we go for global variable else we can use some flag as suggested
in my first approach
所以如果你只是使用
if (TRUE == Lock)
{
/*Code to execute one time*/``
}
锁永远是真的吧?
所以你需要做
if(Lock == TRUE)
{//code to execute
Lock = FALSE;
}
我只想执行一次代码。我使用了基于 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
}
取决于您想何时何地进行此检查。
假设你有一个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
。
注意:
If you are on a flat memory systems it is always dangerous to have global variables so we tend to avoid it. If there is a real need then yes we go for global variable else we can use some flag as suggested in my first approach
所以如果你只是使用
if (TRUE == Lock)
{
/*Code to execute one time*/``
}
锁永远是真的吧?
所以你需要做
if(Lock == TRUE)
{//code to execute
Lock = FALSE;
}