2013-08-22 34 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