【问题标题】:__cplusplus expanded minimum values__cplusplus 扩展最小值
【发布时间】:2020-06-23 22:31:55
【问题描述】:

我是否正确理解这些是__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 有官方价值吗?

【问题讨论】:

  • 现在开始对不符合 Y10K 的命名方案感到恐慌是否为时过早?
  • @user4581301 也许不是!前导零将使数字变为八进制,因此它符合 Y10K 标准。
  • @user4581301 鉴于它不是固定宽度?是的:-)

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


【解决方案1】:

另外,标准发布后,C++20 有官方价值吗?

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

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

【讨论】:

  • 我只是想知道它们在该标准最终发布时的价值。这对我正在做的事情是必要和有用的
猜你喜欢
  • 2018-09-29
  • 2019-11-01
  • 1970-01-01
  • 2020-02-23
  • 2018-04-02
  • 2017-12-31
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多