?
This document uses PHP Chinese website manual Release
預(yù)編譯器在編譯之前的翻譯階段4執(zhí)行。預(yù)處理的結(jié)果是單個文件,然后傳遞給實際的編譯器。
預(yù)處理指令控制預(yù)處理器的行為。每個指令占用一行,并具有以下格式:
#
字符
預(yù)處理指令(之一define
,undef
,include
,if
,ifdef
,ifndef
,else
,elif
,endif
,line
,error
,pragma
)[1]
參數(shù)(取決于指令)
越線
null指令(#
后跟一個換行符)是允許的,不起作用。
預(yù)處理器具有源文件翻譯功能:
有條件地編譯源文件的部分(由指令控制#if
,#ifdef
,#ifndef
,#else
,#elif
和#endif
)。
替換文本宏同時可能級聯(lián)或引用標(biāo)識符(由指令控制#define
和#undef
,以及運營商#
和##
)
包含其他文件(由指令控制#include
)
導(dǎo)致錯誤(由指令控制#error
)
預(yù)處理器的以下方面可以被控制:
實現(xiàn)定義的行為(由指令#pragma
和操作員控制_Pragma
(自C99以來))
預(yù)處理器可用的文件名和行信息(由指令控制#line
)
這些是由標(biāo)準(zhǔn)定義的指令。該標(biāo)準(zhǔn)沒有定義其他指令的行為:它們可能被忽略,具有一些有用的含義,或使程序不合格。即使忽略,當(dāng)預(yù)處理器完成時,它們也會從源代碼中移除。常見的非標(biāo)準(zhǔn)擴展是#warning
在編譯期間發(fā)出用戶定義消息的指令。