2011-08-21 20 views

回答

10

它使用不同的預處理器測試爲每個單獨的特徵,像

#if __has_feature(cxx_decltype) 

用於測試如果decltype被實現。

這裏

http://clang.llvm.org/docs/LanguageExtensions.html#checking_upcoming_features

+0

感謝您指出了這一點。它似乎可用。 – wilx

+3

我必須承認我非常喜歡這個系統,我希望其他編譯器能夠在這裏跳上這一行。它比檢查版本號更加明顯。 –

0

查看完整列表鏘定義相同的宏,主要是爲了與海灣合作委員會的libstdC++兼容性。

我似乎記得開發者喜歡特定功能的檢查一樣了libC++ better

(向下滾動一些)

2

標準說,你可以看一下_cplusplus的價值,以確定哪些標準編譯器正在瞄準。儘管在實踐中你可能無法用這些信息做很多事情。請參閱Bo Persson的答案,以獲得更好的解決方案。

C++ 98/03 - 199711L

C++ 11 - 201103L

+0

'__cplusplus = 199711L/201103L'僅限於GCC 4.7.0及更高版本,除非補丁得到支持。 4.6和更早版本使用'__cplusplus = 1'。 – moshbear