You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

__cplusplus取值含义解析:为何设置-std=c++23却输出202100?

为什么设置-std=c++23后__cplusplus输出202100?

主要有这几个核心原因:

  • 编译器版本未达标:GCC 12及更早版本、Clang 15及更早版本,即便指定-std=c++23,__cplusplus仍会输出202100(C20的标准宏值)。只有GCC 13+、Clang 16+这类较新版本,在启用-std=c++23时才会将__cplusplus设置为202302L(对应C23的标准宏值)。

  • C++23标准的渐进式支持:C23标准是逐步定稿的,早期编译器的-std=c++23选项只是开启C20基础上的部分C++23特性预览,并未完全适配最终发布的完整标准,因此不会更新__cplusplus宏值。

  • 宏定义可手动强制修改(仅作显示):如果暂时无法升级编译器,可手动添加编译选项-D__cplusplus=202302L强制修改宏的输出值,但这只是改变宏的显示结果,不代表编译器真的支持所有C++23特性。

内容的提问来源于stack exchange,提问作者Alexander S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:44:51