G ++缩小了C ++ 98的转换次数

时间:2013-08-22 20:55:25

标签: c++ linux g++

我在Linux上有一个带有g ++ 4.7.3的C ++ 98项目,我收到很多关于“缩小转换在C ++ 11中格式不正确”的警告

为什么?我甚至没有使用C ++ 11

1 个答案:

答案 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