更新:2025-02-14 17:12:20|关注1 人
下列宏名已预定义于每个翻译单元中:
__cplusplus | 代表所用的 C++ 标准版本,展开成以下值之一:
|
__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_t, std::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__
)在整个翻译单元保持为常量。试图重定义或取消定义这些宏会导致未定义行为。
声明:以上是华未云整理的全部内容。本站资源来自及互联网公开收集,仅限学习交流使用,请遵循相关法律法规,如有侵权争议、不妥之处请联系本站删除处理!