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和#endif29%。
- 取代文本宏,同时可能连接或引用由指令控制的标识符%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。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

