我使用Yagarto GCC编译器,并且在使用本地静态变量时发现了问题。在声明它时,所有这些都被我初始化为零。但是在调试执行时,我发现它们没有被初始化:
示例:
void hello( void ){
static int number_hellos = 0;
number_hellos++;
printf("%d\n", number_hellos);
}
当调试器到达number_hellos++
时,我发现它的初始值不是0.为什么?我应该启用任何编译器或链接器标志吗?
答案 0 :(得分:0)
这种静态初始化:
static int number_hellos = 0;
只发生过一次。实际上在编译时。输入功能时不会。
答案 1 :(得分:0)
感谢您的帮助
最后我发现了问题:启动代码未正确初始化静态变量。这就是执行到达函数hello的原因,静态变量是单元化的。
正确的启动代码可以解决问题。
再次感谢