我在Linux上有一个带有g ++ 4.7.3的C ++ 98项目,我收到很多关于“缩小转换在C ++ 11中格式不正确”的警告
为什么?我甚至没有使用C ++ 11
答案 0 :(得分: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