2012-06-07 210 views

回答

7

没有!如果你的代码没有做明确的C标准的规定
全局和静态变量被隐式初始化。
总之,全局和静态变量永远不会未初始化。

+0

默认为是。我希望他们明确初始化。任何静态分析器也应该没问题。 – Kamath

+0

@AUZKamath:No.Since标准已经强制要求全局变量是默认初始化GCC不提供未初始化的全局变量警告或诊断。 –

3

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

5

6.9.2外部对象定义

语义

如果一个对象的标识符的声明有文件范围和初始值设定时, 声明为外部标识符的定义。

为具有文件作用域没有初始化的对象的标识符的声明,和 没有存储类说明或与存储类说明静态的,构成 暂定定义。如果翻译单元包含一个 标识符的一个或多个试探性的定义,和翻译单元包含该标识符的外部定义,然后 行为是完全一样,如果翻译单元包含 标识符的文件范围内声明,与为0。

上述两项条文(从标准)保证文件范围的复合型作为翻译单元的端部,具有一个初始化 等于(全局)对象总是初始化。