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

What macro does Clang define to announce C++11 mode, if any?

本文关键字:如果 模式 c++ 什么 定义 Clang      更新时间:2023-10-16

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

GCC定义了__GXX_EXPERIMENTAL_CXX0X__,至少一些版本是这样的。MSVC似乎在默认情况下至少对_MSC_VER >= 1600打开了支持。

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

#if  __has_feature(cxx_decltype)

用于测试decltype是否实现。

查看此处的完整列表

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

标准规定可以查看_cplusplus的值来确定编译器针对的是哪个标准。尽管在实践中,你可能无法用这些信息做很多事情。参考Bo Persson的答案,可以找到更好的解决方案。

c++ 98/03 - 199711L

c++ 11 - 201103L

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

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

(向下滚动一些)

相关文章: