6

このC++コードを見てください。

class Foo
{
    int a;

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

明らかに、開発者はそれ自体ではなくで初期化aすることを意図しており、これはエラーを見つけるのがかなり難しいです。ba

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 ++で同じ出力を有効にする可能性はありますか?

4

1 に答える 1

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
于 2012-08-19T11:28:10.910 に答える