首页 > 后端开发 > C++ > 如何确定我的编译器所实现的 C 标准版本?

如何确定我的编译器所实现的 C 标准版本?

DDD
发布: 2024-12-13 15:59:11
原创
173 人浏览过

How Can I Determine the Implemented C   Standard Version of My Compiler?

确定实现的 C 标准版本

确定编译器的 C 标准实现对于确保兼容性和利用最新语言功能至关重要。已经发布了多个 C 标准,包括 C 98 和 C 03。

识别标准版本的一种方法是检查宏 __cplusplus。

__cplusplus 宏

根据 Bjarne Stroustrup 的 C 0x FAQ,__cplusplus 宏将是对于 C 11 及更高版本,设置为大于 199711L 的值。但是,某些编译器可能无法正确设置此宏。

GCC

gcc 历史上曾将 __cplusplus 设置为 1,无论语言版本如何。此问题已在 gcc 4.7.0 中得到解决。

MSVC

MSVC 还将 __cplusplus 错误地定义为 199711L。要获取正确的值,请将 /Zc:__cplusplus 添加到编译器标志或检查 MSVC 特定宏 _MSVC_LANG。

预期 __cplusplus 值

  • C pre -C 98:1
  • C 98: 199711L
  • C 98 TR1:无法使用 __cplusplus
  • C 11 确定:201103L
  • C 14:201402L
  • C 17: 201703L
  • C 20: 202002L
  • C 23: 202302L

其他方法

如果 __cplusplus 不足或不可用, 其他方法包括:

  • 编译器特定的宏:检查编译器定义的宏可能会揭示实现的标准版本。
  • Boost.Config:该库提供了用于检查特定 C 功能的宏。
  • 功能评估:运行利用特定功能的代码可以确定它们的可用性,从而确定实现的标准版本。

需要注意的是,并非所有编译器都完全实现 C 标准的所有功能。为了确保可靠的代码执行,需要仔细检查编译器兼容性和功能支持。

以上是如何确定我的编译器所实现的 C 标准版本?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板