C参考手册
C 语法
Preprocessor
预编译器在编译之前的翻译阶段4执行。预处理的结果是单个文件,然后传递给实际的编译器。
指令
预处理指令控制预处理器的行为。每个指令占用一行,并具有以下格式:
-
#
字符 - 预处理指令(之一
define
,undef
,include
,if
,ifdef
,ifndef
,else
,elif
,endif
,line
,error
,pragma
)[1] - 参数(取决于指令)
- 越线
null指令(#
后跟一个换行符)是允许的,不起作用。
功能
预处理器具有源文件翻译功能:
- 有条件地编译源文件的部分(由指令控制
#if
,#ifdef
,#ifndef
,#else
,#elif
和#endif
)。 - 替换文本宏同时可能级联或引用标识符(由指令控制
#define
和#undef
,以及运营商#
和##
) -
包含其他文件(由指令控制
#include
) - 导致错误(由指令控制
#error
)
预处理器的以下方面可以被控制:
- 实现定义的行为(由指令
#pragma
和操作员控制_Pragma
(自C99以来)) - 预处理器可用的文件名和行信息(由指令控制
#line
)
脚注
- 这些是由标准定义的指令。该标准没有定义其他指令的行为:它们可能被忽略,具有一些有用的含义,或使程序不合格。即使忽略,当预处理器完成时,它们也会从源代码中移除。常见的非标准扩展是
#warning
在编译期间发出用户定义消息的指令。