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