Preprocessor
预处理器
预处理器在翻译阶段4,在汇编之前。预处理的结果是一个文件,然后传递给实际的编译器。
指令
预处理指令控制预处理程序的行为。每个指令占用一行,格式如下:
#
字
- 预处理指令%28-1
define
,,,undef
,,,include
,,,if
,,,ifdef
,,,ifndef
,,,else
,,,elif
,,,endif
,,,line
,,,error
,,,pragma
%29[1]
- 参数%28取决于指令%29
- 断线
空指令%28#
后面跟着行中断%29是允许的,没有任何效果。
能力
预处理器具有源文件转换功能:
有条件
编译由指令控制的源文件%28的部分#if
,,,#ifdef
,,,#ifndef
,,,#else
,,,#elif
和#endif
29%。
取代
文本宏,同时可能连接或引用由指令控制的标识符%28#define
和#undef
,以及操作员#
和##
%29
包括
其他文件%28由指令控制#include
并与__has_include
%28自C++17%29%29
- 使...
误差
%28受指令控制#error
%29
可以控制预处理器的下列方面:
实施定义
行为%28受指令控制#pragma
和操作员_Pragma
%28自C++11%29%29
文件名和行信息
由指令控制的预处理程序%28可用#line
%29
脚注
- 这些是标准定义的指令。该标准没有为其他指令定义行为:它们可能被忽略,有一些有用的含义,或者导致编译时错误。即使在其他情况下被忽略,它们也会在完成预处理时从源代码中删除。一个常见的非标准扩展是指令。
#warning
它在编译期间发出用户定义的消息。
另见
C预处理器文档
*。
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。