我的编译器将其扩展为 199711L。这意味着什么?我读到 __cplusplus > 199711L 表示 C++11。这个宏可能有哪些扩展,它意味着什么?
199711L 代表年=1997,月=11(即 1997 年 11 月)——委员会批准该标准的日期,而 ISO 的其他成员则于 1998 年初批准了该标准。
对于 2003 年标准,几乎没有什么变化,委员会(显然)决定保持该值不变。
对于 2011 年标准,需要将其定义为 201103L(同样,年 = 2011 年,月 = 03),这再次意味着委员会批准了该标准于 2011 年 3 月最终确定。
对于2014年标准,需要定义为201402L,解释方式与上述(2014年2月)相同。
对于2017年标准,需要定义为201703L(2017年3月)。
对于2020年标准,该值已更新为202002L(2020年2月)。
对于 2023 年标准,该值已更新为 202302L(2023 年 2 月)。
在原始标准获得批准之前,不少编译器通常将其定义为0
(或者只是一个空定义,例如#define __cplusplus
) 表示“不合格”。当被问及最严格的一致性时,许多人将其定义为1
.
我差点忘了提,但还有一个关于古代编译器的花絮:cfront 的一些最早版本(可能还有其他一些复制它的版本)定义c_plusplus
代替__cplusplus
。我不记得它被定义为任何有意义的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)