Clang定义了什么宏来宣告C++11模式,如果有的话?
GCC定义了__GXX_EXPERIMENTAL_CXX0X__,至少有些版本是这样定义的。默认情况下,MSVC似乎开启了对_MSC_VER >= 1600的支持。
发布于 2011-08-21 23:57:35
它对每个单独的特性使用不同的预处理器测试,例如
#if __has_feature(cxx_decltype)用于测试是否实现了decltype。
请在此处查看完整列表
http://clang.llvm.org/docs/LanguageExtensions.html#checking_upcoming_features
发布于 2011-10-10 12:54:07
该标准指出,您可以查看_cplusplus的值来确定编译器针对的是哪种标准。不过,在实践中,您可能无法使用此信息做太多工作。请参阅Bo Persson的答案,以获得更好的解决方案。
C++98/03 - 199711L
C++11 - 201103L
发布于 2011-08-21 23:59:11
Clang定义了相同的宏,主要是为了与GCC的libstdc++兼容。
我似乎记得开发人员喜欢特定于功能的检查,比如在libc++ better中
(向下滚动一些)
https://stackoverflow.com/questions/7139323
复制相似问题