-O2 -Wall フラグを gcc (4.4.6) に追加した後、警告からコードを削除しました。一部のレガシー コードには多くの警告があります。これは、問題を示すための非常に単純化されたバージョンです。
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 }
「gcc main.cpp -O2 -Wall」としてコンパイルすると、次のように表示されます。
main.cpp:17: warning: `a' is used uninitialized in this function
実際のコードでは、init() は "a" を初期化する場合にのみ true を返すため、初期化されていない "a" は実質的に使用されません。
警告を修正するためにできること。