c – gcc – 删除“在此函数中使用未初始化”警告

前端之家收集整理的这篇文章主要介绍了c – gcc – 删除“在此函数中使用未初始化”警告前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在向gcc(4.4.6)添加-O2 -Wall标志后清除代码.
我在一些遗留代码中有很多警告.这是一个非常简化的版本来演示问题:

 1 #include dio>
  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”实际上没有使用它.

可以做Whan修复警告.

最佳答案
改变bool a; bool a = false;将删除此警告.

编译器不会知道init(a)意味着’初始化’,它只看到程序试图用未初始化的变量调用函数.

猜你在找的Linux相关文章