关注我们
  • 公众号

  • 抖音号

  • 小程序

联系方式: 400-8162-938
栏目导航

C++预定义宏

来源:华未云

更新:2025-02-14 17:12:20|关注1

下列宏名已预定义于每个翻译单元中:

__cplusplus
代表所用的 C++ 标准版本,展开成以下值之一:
  • 199711L(C++11 前)

  • 201103L(C++11)

  • 201402L(C++14)

  • 201703L(C++17)

  • 202002L(C++20)

  • 202302L(C++23)
    (宏常量)

__STDC_HOSTED__
(C++11)
如果实现有宿主(在操作系统下运行)则展开成整数常量 1,如果实现自立(不在操作系统下运行)则展开成 0
(宏常量)
__FILE__
展开成当前文件名,作为字符串字面量,可用 #line 指令更改
(宏常量)
__LINE__
展开成源文件行号,整数常量,可用 #line 指令更改
(宏常量)
__DATE__
展开成翻译日期,形式为 "Mmm dd yyyy" 的字符串。如果月中日期数小于 10 则 "dd" 的首字符为空格。月份名如同以 std::asctime() 生成
(宏常量)
__TIME__
展开成翻译时间,形式为 "hh:mm:ss" 的字符串字面量
(宏常量)
__STDCPP_DEFAULT_NEW_ALIGNMENT__
(C++17)
展开成 std::size_t 字面量,其值为对不具对齐的 operator new 的调用所保证的对齐(更大的对齐将传递给具对齐重载,如 operator new(std::size_tstd::align_val_t)
(宏常量)
__STDCPP_­BFLOAT16_­T____STDCPP_­FLOAT16_­T____STDCPP_FLOAT32_T____STDCPP_FLOAT64_T____STDCPP_FLOAT128_T__
(C++23)
当且仅当实现支持对应的扩展浮点类型时展开成 1
(宏常量)

实现可能会预定义下列其他的宏名:

__STDC__
如果存在则为实现定义值,典型地用于指示 C 遵从性
(宏常量)
__STDC_VERSION__
(C++11)
如果存在则为实现定义值
(宏常量)
__STDC_ISO_10646__
(C++11)
如果 wchar_t 使用 Unicode,那么展开成 yyyymmL 形式的整数常量,日期指示所支持的 Unicode 的最近版本(C++23 前)如果存在则为实现定义值(C++23 起)
(宏常量)
__STDC_MB_MIGHT_NEQ_WC__
(C++11)
如果对于基本字符集成员 'x' == L'x' 可能为假,则展开成 1,如在基于 EBCDIC 并且为 wchar_t 使用 Unicode 的系统上。
(宏常量)
__STDCPP_THREADS__
(C++11)
如果程序能拥有多于一个执行线程则展开成 1
(宏常量)
__STDCPP_STRICT_POINTER_SAFETY__
(C++11)(C++23 移除)
如果实现支持严格 std::pointer_safety 则展开成 1
(宏常量)

这些宏的值(除了 __FILE__ 和 __LINE__)在整个翻译单元保持为常量。试图重定义或取消定义这些宏会导致未定义行为。

声明:以上是华未云整理的全部内容。本站资源来自及互联网公开收集,仅限学习交流使用,请遵循相关法律法规,如有侵权争议、不妥之处请联系本站删除处理!