gcc,未初始化的全局变量

时间:2012-06-07 07:14:30

标签: c gcc

有没有办法知道/警告全局变量是否未使用gcc初始化?

我得到了本地/原子变量“-Wuninitialized”

3 个答案:

答案 0 :(得分:7)

没有!
如果您的代码没有按照C标准的要求明确地执行,则隐式初始化全局变量和静态变量 简而言之,全局变量和静态变量永远不会被初始化。

答案 1 :(得分:5)

  

6.9.2外部对象定义

     

<强>语义

     

1 如果对象的标识符声明具有文件范围和初始化程序,则   声明是标识符的外部定义。

     

2 具有没有初始化程序的文件范围的对象的标识符声明   没有存储类说明符或存储类说明符静态,构成一个   暂定的定义。如果翻译单元包含一个或多个临时定义   然后,标识符和转换单元不包含该标识符的外部定义   行为就像翻译单元包含该文件范围声明一样   标识符,具有复制类型,如翻译单元的末尾,带有初始化程序   等于0。

以上两个子句(来自标准)保证始终初始化文件范围(全局)对象。

答案 2 :(得分:3)

不,因为gcc会自动将所有全局变量和静态变量初始化为“0”。