2011-07-22 15 views
3

可能重複:
GNU C++ how to check when -std=c++0x is in effect?捕獲的C++ 0x裏面的程序標誌

我想要做的是:

#if defined(CPLUSPLUS_OXFLAG) 
    //do something 
#else 
    //do something else 
#endif 

現在,我怎麼捕捉 - std = C++ 0x參數傳遞給編譯器(g ++)至define我的CPLUSPLUS_OXFLAG標誌?

+1

您可以嘗試類似'#if __cplusplus> = 201103L #define CPLUSPLUS_OXFLAG#endif'。 – 2011-07-22 20:28:25

+0

在標準的C++ 0x中,[「宏__cplusplus將被設置爲一個不同於(大於)當前199711L的值」](http://www2.research.att.com/~bs/C+ + 0xFAQ.html#0X)。我不確定實驗性的C++ 0x GCC實現是否會這樣做。 –

回答

2

GCC documentation指出在編輯-std=c++0x時定義了預處理器符號__GXX_EXPERIMENTAL_CXX0X__

+0

感謝您的回答 –

1

當啓用std=c++0x時,GCC定義__GXX_EXPERIMENTAL_CXX0X__

+0

感謝您的回答 –

2

對於GCC看看這樣:

__GXX_EXPERIMENTAL_CXX0X__

編譯C++源文件與所述選項時,此宏被定義-std = C++ 0x或-std = GNU ++ 0X。它表示可能包含在C++ 0x中的某些功能可用。請注意,這些功能是實驗性的,可能會在未來版本的GCC中更改或刪除。

查找參考here

+0

謝謝... +1爲參考 –