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