我正在使用 Yagarto GCC 编译器,但在使用局部静态变量时发现问题。它们在声明时都被我初始化为零。但是在调试执行时,我发现它们没有被初始化:
例子:
void hello( void ){
static int number_hellos = 0;
number_hellos++;
printf("%d\n", number_hellos);
}
当调试器到达number_hellos++
时,我发现它的初始值不是0。为什么?是否应该启用任何编译器或链接器标志?
最佳答案
这个静态初始化:
static int number_hellos = 0;
只发生一次。实际上在编译时。不是在进入函数的时候。
关于c - 静态变量未被初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25442168/