在线文档教程
C++
语言 | Language

Preprocessor

预处理器

预处理器在翻译阶段4,在汇编之前。预处理的结果是一个文件,然后传递给实际的编译器。

指令

预处理指令控制预处理程序的行为。每个指令占用一行,格式如下:

  • #

  • 预处理指令%28-1define,,,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。

http://en.cppreference.com/w/cpp/preProcessor