静态变量未初始化

时间:2014-08-22 07:55:13

标签: c static

我使用Yagarto GCC编译器,并且在使用本地静态变量时发现了问题。在声明它时,所有这些都被我初始化为零。但是在调试执行时,我发现它们没有被初始化:

示例:

void hello( void ){
    static int number_hellos = 0;

    number_hellos++;

    printf("%d\n", number_hellos);

}

当调试器到达number_hellos++时,我发现它的初始值不是0.为什么?我应该启用任何编译器或链接器标志吗?

2 个答案:

答案 0 :(得分:0)

这种静态初始化:

static int number_hellos = 0;

只发生过一次。实际上在编译时。输入功能时不会。

答案 1 :(得分:0)

感谢您的帮助

最后我发现了问题:启动代码未正确初始化静态变量。这就是执行到达函数hello的原因,静态变量是单元化的。

正确的启动代码可以解决问题。

再次感谢