Fab*_*orr 5 c++ gcc warnings initialization compiler-options
看看这段C++代码:
class Foo
{
int a;
public: Foo(int b): a(a) {}
};
Run Code Online (Sandbox Code Playgroud)
显然,开发商意味着初始化a
与b
而非a
本身,这是一个相当困难的现场错误.
Clang ++会警告这个可能的错误,而GCC不会,即使启用了其他警告:
$ clang++ -c init.cpp
init.cpp:5:27: warning: field is uninitialized when used here [-Wuninitialized]
public: Foo(int b): a(a) {}
^
$ g++ -Wall -Wuninitialized -Winit-self -c init.cpp
$
Run Code Online (Sandbox Code Playgroud)
有没有机会为g ++启用相同的输出?
使用更新的gcc :-)似乎对我工作正常:
stieber@gatekeeper:~$ g++ -Wall -Wuninitialized -Winit-self -c Test.cpp
Test.cpp: In constructor ‘Foo::Foo(int)’:
Test.cpp:5:9: warning: ‘Foo::a’ is initialized with itself [-Wuninitialized]
stieber@gatekeeper:~$ gcc --version
gcc (Debian 4.7.1-2) 4.7.1
Run Code Online (Sandbox Code Playgroud)