Clang定义了什么宏来宣布C ++ 11模式,如果有的话?

时间:2011-08-21 15:51:26

标签: c++ c++11 clang

Clang定义了什么宏来宣布C ++ 11模式,如果有的话?

GCC定义__GXX_EXPERIMENTAL_CXX0X__,至少有一些版本。默认情况下,MSVC似乎至少为_MSC_VER >= 1600启用了支持。

3 个答案:

答案 0 :(得分:10)

它为每个单独的功能使用不同的预处理器测试,例如

#if  __has_feature(cxx_decltype)

用于测试decltype是否已实施。

请参阅此处的完整列表

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

答案 1 :(得分:2)

标准说你可以查看_cplusplus的值来确定编译器所针对的标准。虽然,实际上您可能无法对此信息做多少工作。请参阅Bo Persson的答案以获得更好的解决方案。

C ++ 98/03 - 199711L

C ++ 11 - 201103L

答案 2 :(得分:0)

Clang定义了相同的宏,主要是为了与GCC的libstdc ++兼容。

我似乎记得开发人员喜欢libc ++ better中特定于功能的检查:

(向下滚动一些)