2012-06-07 177 views

回答

7

沒有!如果你的代碼沒有做明確的C標準的規定
全局和靜態變量被隱式初始化。
總之,全局和靜態變量永遠不會未初始化。

+0

默認爲是。我希望他們明確初始化。任何靜態分析器也應該沒問題。 – Kamath

+0

@AUZKamath:No.Since標準已經強制要求全局變量是默認初始化GCC不提供未初始化的全局變量警告或診斷。 –

3

沒有,因爲gcc自動初始化爲「0」的所有全局和靜態變量。

5

6.9.2外部對象定義

語義

如果一個對象的標識符的聲明有文件範圍和初始值設定時, 聲明爲外部標識符的定義。

爲具有文件作用域沒有初始化的對象的標識符的聲明,和 沒有存儲類說明或與存儲類說明靜態的,構成 暫定定義。如果翻譯單元包含一個 標識符的一個或多個試探性的定義,和翻譯單元包含該標識符的外部定義,然後 行爲是完全一樣,如果翻譯單元包含 標識符的文件範圍內聲明,與爲0。

上述兩項條文(從標準)保證文件範圍的複合型作爲翻譯單元的端部,具有一個初始化 等於(全局)對象總是初始化。