仅在第一次迭代时执行

时间:2018-06-13 13:22:31

标签: c

我在纯嵌入式c中面临一个问题,那就是我的逻辑。存在变量文本。我正在使用

在一个地方清除它
text = NULL;

但是当第一次执行到这个地方时,此代码也必须只执行一次。

除了使用标志变量

之外,请建议我使用最佳逻辑

2 个答案:

答案 0 :(得分:1)

完全没有上下文,以下是实现此目的的方法。但根据具体情况,可能会有更好的方法。

要在进程的生命周期中只执行一次代码,我通常会使用这样的结构。

static int first_time = 1; // create and initiallize to 1
if (first_time) // equal to first_time != 0
{
  text = NULL;
  first_time = 0;
}

这将创建一个具有静态存储持续时间的变量,该变量在第一次到达代码时被初始化为1。从那时起,该变量出现在相应的函数中(它不会在函数末尾删除),并且该值仅随正常赋值而变化。除了第一次调用之外,将跳过初始化,因为变量已经存在。

通过这种方式,您可以检查代码的某个部分是否已执行。

有关详细信息,请参阅this

答案 1 :(得分:-1)

相当不清楚你究竟在寻找什么,但另一个答案涵盖了如何在第一次调用重复过程时执行text = NULL行,而不是再次执行。如果您只想在启动微处理器时运行一次进程,则可以在开始重复while(1)循环之前在main()中执行该过程。

int main(void){
/*Perform one-time on boot initializations here*/
text = NULL;
     while(1){
          /*Repeating code here*/
     }
}
相关问题