将 -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”实际上没有用处。
可以做些什么来修复警告。