警告类成员自我初始化

时间:2012-08-19 11:15:35

标签: c++ gcc initialization warnings compiler-options

看看这段C ++代码:

class Foo
{
    int a;

    public: Foo(int b): a(a) {}
};

显然,开发人员打算用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 
$

是否有可能为g ++启用相同的输出?

1 个答案:

答案 0 :(得分:8)

使用更新的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