前置處理器
来自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
,它使得編譯時產生一條可以自訂內容的警告資訊。