1

Linux で g++ 4.7.3 を使用する C++98 プロジェクトを使用していますが、「C++11 では変換の縮小が不適切です」という警告が多数表示されます。

どうして?C++11すら使ってない

4

1 に答える 1

1

これらの警告は、「これは現在有効ですが、将来的には無効になります」という警告です。これらは、有効な C++98 のコード用に特別に設計されており、C++98 モードではコンパイル エラーは発生しませんが、将来 C++11 に切り替える場合に問題が発生する可能性があります。デフォルトでは有効になっていませんが、有効になっています-Wall。それが起こらないと本当に確信している場合は、次のように変更でき-Wallます-Wall -Wno-c++11-compat

コード例:

unsigned u[] = {-1};
$ g++ -c test.cc -ansi -pedantic
$ g++ -c test.cc -ansi -pedantic -Wall
test.cc:1:19: 警告: { } 内の '-1' から 'unsigned int' への '-1' のナローイング変換は、C++11 では不適切な形式です [-Wnarrowing]
 符号なし u[] = {-1};
                   ^
$ g++ -c test.cc -ansi -pedantic -Wall -Wno-c++11-compat
于 2013-08-22T21:08:10.373 に答える