有没有办法知道/警告全局变量是否未使用gcc初始化?
我得到了本地/原子变量“-Wuninitialized”
答案 0 :(得分:7)
没有!
如果您的代码没有按照C标准的要求明确地执行,则隐式初始化全局变量和静态变量
简而言之,全局变量和静态变量永远不会被初始化。
答案 1 :(得分:5)
6.9.2外部对象定义
<强>语义强>
1 如果对象的标识符声明具有文件范围和初始化程序,则 声明是标识符的外部定义。
2 具有没有初始化程序的文件范围的对象的标识符声明 没有存储类说明符或存储类说明符静态,构成一个 暂定的定义。如果翻译单元包含一个或多个临时定义 然后,标识符和转换单元不包含该标识符的外部定义 行为就像翻译单元包含该文件范围声明一样 标识符,具有复制类型,如翻译单元的末尾,带有初始化程序 等于0。
以上两个子句(来自标准)保证始终初始化文件范围(全局)对象。
答案 2 :(得分:3)
不,因为gcc会自动将所有全局变量和静态变量初始化为“0”。