预处理器

来自cppreference.com
< cpp
 
 
C++语言
表达式
替代表示
字面量
布尔型 - 整型 - 浮点型
字符型 - 字符串 - nullptr (C++11)
用户定义 (C++11)
Utilities
属性 (C++11)
Types
typedef声明
类型别名声明 (C++11)
Casts
隐式类型转换 - 显示类型转换
static_cast - dynamic_cast
const_cast - reinterpret_cast
内存分配
类特有的函数属性
静态成员函数
模板
杂项
 
 

预处理器发生在编译之前,在翻译阶段四运行,其结果将作为一个单独的文件传送给真正的编译器进行编译。

目录

[编辑] 指令

预处理指令控制预处理器的操作。每个指令占据一行并且具有如下的格式:

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

空指令(#后跟一个换行符)是合法的,并且不产生任何具体效果。

[编辑] 功能

预编译器在源文件翻译中有如下的功能:

  • 有条件地编译源文件的若干部分(由指令 #if#ifdef#ifndef#else#elif#endif 控制)。
  • 替換文本宏,并可以连接标识符,或将标识符放入字符串中(由指令#define#undef,预编译操作符###控制)
  • 包含其他文件(由指令#include控制)
  • 产生一個错误(由指令#error控制)

预处理器的以下方面可以被控制:

[编辑] 脚注

  1. 这些是标准所定义的指令。标准没有定义其它指令的行为,他们可能被忽略,可能具有有用的功能,也可能造成一个编译错误。无论如何,当预处理结束是,预处理指令会被从源文件中移除。一个常见的非标准扩展是#warning,它使得编译時产生一条自定义內容的警告信息。

[编辑] 另见

预处理器C文档