我在纯嵌入式c中面临一个问题,那就是我的逻辑。存在变量文本。我正在使用
在一个地方清除它text = NULL;
但是当第一次执行到这个地方时,此代码也必须只执行一次。
除了使用标志变量
之外,请建议我使用最佳逻辑答案 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*/
}
}