为什么-Winit-self与-Wuninitialized分开

时间:2014-04-09 14:17:18

标签: c gcc warnings

This Question是关于让gcc编译器在输入拼写错误并用自己初始化变量时发出警告。

      int f()
      {
        int i = i;
        return i;
      }

除了-Wuninitialized

之外,您还需要-Winit-self flag
  

-Winit-self(仅限C,C ++,Objective-C和Objective-C ++)警告用自己初始化的未初始化变量。注意   此选项只能与-Wuninitialized选项一起使用   转弯仅适用于-O1及以上。

我的问题是:为什么这不是-Wuninitialized的默认行为?你想要警告未初始化变量的用例是什么,而不是自我初始化变量,这同样很麻烦?

1 个答案:

答案 0 :(得分:2)

看起来这个错误报告Warn about member variables initialized with itself有一个解释(强调我的):

  

我同意安德鲁的意见,a(a)错误总是应该警告,它应该独立于-Winit-self,它存在所以-Wuninitialized并不警告共同(但可疑)的做法自动初始化自动变量以消除警告

它可能称为有问题的练习,因为它是undefined behavior in C++ to self initialize an automatic variable,而错误报告是C ++错误报告。