__cplusplus 扩展的最小值

__cplusplus expanded minimum values

我理解这些是 __cplusplus 最小值 并且 C++98 具有与 C++03 相同的值吗?

// C++ 98
#define __cplusplus 199711L
// C++ 03
#define __cplusplus 199711L
// C++ 11
#define __cplusplus 201103L
// C++ 14
#define __cplusplus 201402L
// C++ 17
#define __cplusplus 201500L
// C++ 20
#define __cplusplus 201704L
// looks like the format is YEAR*100+something

此外,C++20 标准发布后是否具有官方价值?

Also, does C++20 have an official value now that the standard is released?

确实如此:202002L。这里的格式是日期:YYYYMM(C++20 于 2020 年 2 月正式发布)。 C++17 的值是 201703L,而不是 201500。其余的都是正确的(C++03 没有更改 __cplusplus 宏)。

但是,这个宏太粗糙了,无法普遍使用。实现不只是一次添加所有功能,它们会随着时间的推移而添加。所以你最好使用 feature-test macros 来测试你真正需要的东西。