將-O2 -Wall標誌添加到gcc(4.4.6)後清除警告代碼。 我在一些遺留代碼中有很多警告。這是非常簡化的版本來演示該問題:gcc - 刪除「在此函數中未初始化」使用警告
1 #include <cstdio>
2
3 bool init(bool& a)
4 {
5 return true;
6 }
7
8 int main()
9 {
10 bool a;
11
12 if (!init(a))
13 {
14 return 1;
15 }
16
17 if (a)
18 {
19 printf("ok\n");
20 }
21 }
當編譯爲 「海灣合作委員會的main.cpp -02 -Wall」 我收到:
main.cpp:17: warning: `a' is used uninitialized in this function
在實際的代碼時,init()返回true只有在初始化「a」時纔有效,所以未初始化的「a」沒有用處。
Whan可以解決警告。
要編譯生成未定義行爲的代碼,但使用的是'-Wall'?當你想知道你的UB課程爲什麼不起作用時,你會回來嗎? – DanielKO