这个问题的目的是让gcc编译器在输入错误并使用自身初始化变量时发出警告。
int f() { int i = i; return i; }
事实证明,除了标志之外,您还需要-Wuninitialized
-Winit-self(C,C++,Objective和Objective++)警告未初始化的变量,这些变量是用自己初始化的。注意,此选项只能与-Wuninitialized选项一起使用,而后者只适用于-O1和以上版本。
我的问题是:为什么这不是-Wuninitialized的默认行为?在什么用例中,要警告未初始化的变量,而不是自初始化的变量,这些变量同样麻烦?
发布于 2014-04-09 14:22:08
看起来这个bug报告关于使用自身初始化的成员变量的警告对此有一个解释(强调我的):
我同意安德鲁的观点,a(a)错误应该总是警告,它应该独立于-Winit-self,它存在,这样-Wuninitialized就不会对自初始化自动变量以沉默警告这一常见的(但有问题的)做法发出警告。
它可能被称为有问题的实践,因为它是C++中未定义的行为以自初始化自动变量,而bug报告是C++错误报告。
https://stackoverflow.com/questions/22965414
复制相似问题