预处理器
来自cppreference.com
< cpp
预处理器在编译开始之前,翻译阶段4运行,其结果将作为一个单独的文件传送给真正的编译器进行编译。
[编辑] 指令
预处理指令控制预处理器的操作。每个指令占据一行并且具有如下的格式:
-
#
字元 - 預處理指令(
define
、undef
、include
、if
、ifdef
、ifndef
、else
、elif
、endif
、line
、error
、pragma
之一)[1] - 參數(取決於指令)
- 分行符號
空指令(#
後跟一個分行符號)是合法的,並且沒有效果。
[编辑] 功能
預編譯器有翻譯原始檔案的功能:
- 有條件地編譯源文件的若干部分(由指令
#if
、#ifdef
、#ifndef
、#else
、#elif
和#endif
控制)。 - 替換文本宏,而可能是串聯或引用識別字(由指令
#define
和#undef
,符號#
和##
控制) - 包含其他文件(由指令
#include
控制) - 產生一個錯誤(由指令
#error
控制)
前置處理器可以控制以下幾個方面:
[编辑] 註腳
- ↑ 這些是標準所定義的指令。標準沒有規定其他指令的行為,它們可能被忽略,可能具有有用的功能,也可能造成一個編譯錯誤。無論如何,當預處理結束時,它們會被刪除。一個常見的非標準擴展是
#warning
,它使得編譯時產生一條可以自訂內容的警告資訊。