У меня есть проект C++ 98 на linux с g ++ 4.7.3, и я получаю много предупреждений о том, что «сужение преобразования плохо сформировано в C++ 11»G ++ сужение конверсий с C++ 98
Почему? Я даже не использую C++ 11
У меня есть проект C++ 98 на linux с g ++ 4.7.3, и я получаю много предупреждений о том, что «сужение преобразования плохо сформировано в C++ 11»G ++ сужение конверсий с C++ 98
Почему? Я даже не использую C++ 11
Эти предупреждения являются действительными в настоящее время, но не будут действительны в будущем. Они специально разработаны для кода, который является допустимым 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
код, который показывает предупреждение поможет. И дважды проверьте свои параметры компилятора. – chris
Если вы включили SSCCE (http://sscce.org/) вместе с командной строкой и выходом компиляции, это поможет сделать вопрос более конкретным. – NPE