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
的默认行为?你想要警告未初始化变量的用例是什么,而不是自我初始化变量,这同样很麻烦?
答案 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 ++错误报告。