2012-01-20 100 views
3

我在Arch Linux 3.2.1上安裝了最新版本的英特爾C++編譯器v12.1.2。當我用ICPC編譯我的C++文件如何打開英特爾C++編譯器的C++ 0x 12.1.2

icpc -O3 -DNDEBUG -std=gnu++0x -o obj/main.o src/main.cpp -c 

icpc -O3 -DNDEBUG -std=c++0x -o obj/main.o src/main.cpp -c 

警告彈出

Warning #2928: the __GXX_EXPERIMENTAL_CXX0X__ macro is disabled when using GNU version 4.6 with the c++0x option 

我的main.cpp中包含了許多的C++ 0x功能,比如右值引用,auto等。但是Intel編譯器不能在C++ 0x模式下工作。如何打開它的C++ 0x功能?

回答

6

我不得不通過這個打我的方式,但一個快速的解決方案似乎是:

  1. 安裝的libstdC++ 4.5(或更早)
  2. 編譯icpc -gcc-name=gcc-4.5 -std=c++0x

的問題是,英特爾編譯器不支持所有的GNU編譯器也從4.6版本開始的C++ 0x功能。這會導致與GNU libstdC++頭文件不兼容,因爲目前所有C++ 0x功能都受唯一宏__GXX_EXPERIMENTAL_CXX0X__保護,並且無法單獨啓用或禁用。

2

檢查here。看來的C++ 0x是不是完全支持

+1

當然,目前沒有編譯器可以支持所有的C++ 0x功能,但大多數主流編譯器可以支持其中的一些。我相信英特爾C++編譯器12.1.2絕對支持右值引用。現在的問題,如何啓用它? –

+0

我記得幾個月前我用過'icc',我不得不從C++ 0x辭職。但它不會幫助你:) –

+0

@JackyLee:同樣的鏈接也回答了這個問題 - 「*在使用Visual C++ 2010的Intel C++編譯器的Windows環境下*,Visual C++支持的C++ 0x功能2010「默認啓用,使用'」/ Qstd = C++ 0x「'打開所有其他情況的支持。在Linux或Mac OS X環境下使用'」-std = C++ 0x「'。*」 – ildjarn

相關問題