2013-08-22 5 views
0

У меня есть проект C++ 98 на linux с g ++ 4.7.3, и я получаю много предупреждений о том, что «сужение преобразования плохо сформировано в C++ 11»G ++ сужение конверсий с C++ 98

Почему? Я даже не использую C++ 11

+1

код, который показывает предупреждение поможет. И дважды проверьте свои параметры компилятора. – chris

+1

Если вы включили SSCCE (http://sscce.org/) вместе с командной строкой и выходом компиляции, это поможет сделать вопрос более конкретным. – NPE

ответ

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: warning: narrowing conversion of ‘-1’ from ‘int’ to ‘unsigned int’ inside { } is ill-formed in C++11 [-Wnarrowing] 
unsigned u[] = {-1}; 
       ^
$ g++ -c test.cc -ansi -pedantic -Wall -Wno-c++11-compat 
Смежные вопросы