這個程序更多的警告與-Os
int main()
{
int a, b;
a = b;
return 0;
}
,如果你有
g++ -Wall test.cpp
編譯不過,如果你對的優化編譯它編譯沒有警告或錯誤,即使在相同警戒級別
g++ -Wall -Os test.cpp
然後它會開始抱怨你正在使用未初始化的變量!
(注意:實際的程序稍微長一些,並沒有像這個小例子那樣清楚地暴露問題)。
我試過用谷歌搜索,但是我沒有使用正確的搜索條款,或者這不是已知的現象。無論如何,我的問題基本上都是
- 爲什麼編譯器會給這個警告提供-Os但是不與-O0,即使在相同的警告級別? (如果有的話,我希望它是這個小例子的另一種方式,因爲變量可以完全優化,然後問題就會消失。)
- 是否有任何其他編譯器選項會觸發意外警告喜歡這個?由於我有興趣使我的程序無bug,我喜歡看到它們全部!
- 這是一個已知的特色嗎?如果是這樣,我在哪裏可以找到它?我確實嘗試搜索。
- 或者這只是我的特定版本的編譯器(gcc 4.3.2-1.1,Linux,32位)中的一個小故障?
我* *在最近的各種GCC版本中使用您的第一編譯行獲取警告,請參閱答案bel流。 – juanchopanza
你有一個設置的地方默認的O級別2或更高?如果您手動輸入-O0,會發生什麼情況?否則,也許我的gcc版本只是過時了。但是,這是我的存儲庫附帶的版本...我知道,我對一個新系統已經過期了。 –
我明確使用了'-O0'。 – juanchopanza