c++ - __cplusplus 扩展最小值

标签 c++ language-lawyer c++20 c++03 c++98

我是否正确理解这些是 __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 标准发布后是否具有官方值(value)?

最佳答案

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来测试你真正需要的东西。

关于c++ - __cplusplus 扩展最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62544756/

相关文章:

c++ - 引用包装器的初始化列表

c++ - 超出范围的枚举转换能否产生基础类型之外的值?

c++ - thread_local 变量的实例是否保证由访问它们的线程初始化?

c++ - 常量求值器必须拒绝 C++ 中的未定义行为( union 示例)吗?

c++ - 如何将一个模块拆分成多个文件

c++ - 嵌套列表(字符串 vector 的 vector )初始化失败

c++ - c++中sizeof运算符是如何实现的?

c++ - 使用不同文件声明函数/vector 的 C++ 中的多重定义错误

可以取消引用与有效指针比较的元素指针之后的指针吗?

c++ - constexpr:constexpr 成员的定义和声明