2016-10-26 12 views
12

に消える:警告は、私はこの簡単なプログラムのコンパイルC++ 11

​​

をし、私はそれらの警告を得る:

もちろん
$ g++ -std=c++11 -Wall -Wextra -Wpedantic foo.cpp -o foo 
foo.cpp: In function ‘int main()’: 
foo.cpp:21:9: warning: unused variable ‘bar’ [-Wunused-variable] 
    Bar bar; 
     ^
foo.cpp:23:11: warning: ‘foo.Foo::b’ is used uninitialized in this function [-Wuninitialized] 
    printf("%d %d\n", foo.a, foo.b); 
     ^
foo.cpp:23:11: warning: ‘foo.Foo::a’ is used uninitialized in this function [-Wuninitialized] 

が、これは我々が期待するものです。しかし、Barデフォルトのctorのコメントを外すと、すべての警告が消える問題があります。

なぜBar ctorはFooの警告を無効にするのですか?

私のGCCバージョンはg++ (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609です。

問題はC++ 03ではなく、C++ 11以降でのみ発生します。

+4

g ++(GCC)6.1.0では、警告[Demo](http://coliru.stacked-crooked.com/a/19043d798802ac4a)が表示されます。 – Jarod42

+0

Jarodが指摘したように、これは修正されたコンパイラのバグです。 – StoryTeller

+1

@ Jarod42 OPのように、 '-O2'なしで試してみてください。 –

答えて

1

Jarodが指摘したように、これは修正されたコンパイラのバグです。

関連する問題