预处理器
来自cppreference.com
< cpp
在编译前,于翻译阶段 4 执行预处理器。预处理的结果是之后传递给实际编译器的单个文件。
目录 |
[编辑] 指令
预处理指令控制预处理器的行为。每个指令占据一行并拥有下列格式:
-
#
字符 - 预处理指令(
define
、undef
、include
、if
、ifdef
、ifndef
、else
、elif
、endif
、line
、error
、pragma
之一)[1] - 参数(取决于指令)
- 换行符
允许空指令(后随换行符的 #
)而它无效果。
[编辑] 能力
预处理器拥有源文件翻译能力:
- 条件性编译源文件的部分(由
#if
、#ifdef
、#ifndef
、#else
、#elif
和#endif
指令控制)。 - 替换文本宏,同时可能连接或对标识符加引号(由
#define
和#undef
指令与#
和##
运算符控制)。 - 包含其他文件(由
#include
指令控制并以__has_include
检查 (C++17 起))。 - 导致错误(由
#error
指令控制)
能控制预处理器的下列方面:
[编辑] 脚注
- ↑ 这些指令是标准定义的。标准不定义其他指令的行为:它们可以被忽略、拥有一些有用的含义或导致编译时错误。即使忽略,也会在预处理器完成时将它们从源码移除。常用的非标准扩展是在编译期间放出用户定义消息的
#warning
指令。
[编辑] 参阅
预处理器 的 C 文档
|