1

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

怎么来的?我什至没有使用 C++11

4

1 回答 1

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:警告:在 C++11 [-Wnarrowing] 中,在 {} 内将“-1”从“int”缩小到“unsigned int”的转换是不正确的
 无符号 u[] = {-1};
                   ^
$ g++ -c test.cc -ansi -pedantic -Wall -Wno-c++11-compat
于 2013-08-22T21:08:10.373 回答