gpt4 book ai didi

c++ - __cplusplus 指令在各种编译器中是如何定义的?

转载 作者:IT老高 更新时间:2023-10-28 12:46:56 25 4
gpt4 key购买 nike

我的编译器将其扩展为 199711L。这意味着什么?我读到 __cplusplus > 199711L 表示 C++11。这个宏有哪些可能的扩展,它意味着什么?

最佳答案

199711L 代表 Year=1997,Month = 11(即 1997 年 11 月)- 委员会批准标准的日期,ISO 其他成员在 1998 年初批准。

对于 2003 年标准,委员会(显然)决定保持该值不变。

对于 2011 年标准,需要将其定义为 201103L,(同样,年 = 2011,月 = 03)再次表示委员会批准该标准于 2011 年 3 月完成。

对于 2014 年标准,它需要定义为 201402L,解释方式与上述相同(2014 年 2 月)。

对于 2017 标准,要求定义为 201703L(2017 年 3 月)。

对于 2020 年标准,该值已更新为 202002L(2020 年 2 月)。

在原始标准被批准之前,很多编译器通常将其定义为0(或者只是一个空定义,如#define __cplusplus)来表示“不符合” ”。当被问及最严格的一致性时,许多人将其定义为 1

我差点忘了提,但还有一点关于古代编译器的花絮:一些最早的 cfront 版本(可能还有一些其他版本的复制器)定义了 c_plusplus 而不是 __cplusplus。我不记得它被定义为任何有意义的值。

关于c++ - __cplusplus 指令在各种编译器中是如何定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11053960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com