预定义宏#
下列宏名已预定义于每个翻译单元中:
预定义宏 |
解释说明 |
---|---|
|
代表所用的 C++ 标准版本,展开成值 |
|
如果实现有宿主(在操作系统下运行)则展开成整数常量 |
|
展开成当前文件名,作为字符串字面量,可用 |
|
展开成源文件行号,整数常量,可用 |
|
展开成翻译日期,形式为 |
|
展开成翻译时间,形式为 |
|
展开成 std::size_t 字面量,其值为对不具对齐的 operator new 的调用所保证的对齐(更大的对齐将传递给具对齐重载,如 operator new(std::size_t, std::align_val_t)) (宏常量) |
|
当且仅当实现支持对应的扩展浮点类型时展开成 |
实现可能会预定义下列其他的宏名:
预定义宏 |
解释说明 |
---|---|
|
如果存在则为实现定义值,典型地用于指示 C 遵从性 (宏常量) |
|
如果存在则为实现定义值 (宏常量) |
|
如果 |
|
如果对于基本字符集成员 |
|
如果程序能拥有多于一个执行线程则展开成 |
|
如果实现支持严格 std::pointer_safety 则展开成 |
这些宏的值(除了 __FILE__
和 __LINE__
)在整个翻译单元保持为常量。试图重定义或取消定义这些宏会导致未定义行为。
Note
注意:在每个函数体的作用域内部都有一个名为 __func__
的特殊的函数局域预定义变量,它被定义为一个持有具有实现定义格式的函数名的静态字符数组。它不是预处理器宏,但它与 __FILE__
和 __LINE__
一起使用,例如 assert。(C++11 起)