预处理器

来自cppreference.com
< c

预处理器于翻译阶段4执行,在编译之前。预处理的结果是将被传递给实际编译器的单个文件.

目录

[编辑] 指令

预处理指令控制预处理器的行为。每个指令占据一行,且拥有下列格式:

  • #字符
  • 预处理指令(defineundefincludeififdefifndefelseelifendiflineerrorpragma之一)[1]
  • 参数(依赖于指令)
  • 换行符

空指令(跟随换行符的#)是允许的,且没有效果。

[编辑] 能力

预处理器拥有源文件翻译能力:

  • 条件性编译源文件的部分(以指令#if#ifdef#ifndef#else#elif#endif控制)。
  • 替换文本宏,可以连接或加引标识符(以指令#define#undef,运算符###控制)。
  • 包含其他文件(以指令#include控制)。
  • 导致错误(以指令#error控制)。

预处理器的下列方面可得到控制:

[编辑] 脚注

  1. 这些是标准定义的指令。标准不定义其他指令的行为:它们可能被忽略,或拥有有用的含义,或零程序病态。即使它们还被忽略,在预处理器完成时它们会被移出源代码。一个常见的非标准扩展是指令#warning,它在编译中发出用户定义的信息。

[编辑] 参考

  • C11 standard (ISO/IEC 9899:2011):
  • 6.10 Preprocessing directives (p: 160-178)
  • C99 standard (ISO/IEC 9899:1999):
  • 6.10 Preprocessing directives (p: 145-162)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 3.8 PREPROCESSING DIRECTIVES

[编辑] 参阅

预处理器C++ 文档