巨集 (C/C++)
前置處理作業會展開所有的行數不是前置處理器指示詞中的巨集 (不需要的線條 # 為第一個非空格字元) 並不會略過條件式編譯的一部分有些指示詞的地方。 「 "的條件式編譯指示詞可讓您測試常數運算式,以隱藏編譯原始程式檔的組件,或判斷哪一個文字區塊的識別項傳遞給編譯器,哪一個文字區塊會從原始程式檔移除前置處理期間。
#define指示詞通常用來建立有意義的識別項與常數、 關鍵字、 以及常用的陳述式或運算式的關聯。 識別項,表示常數也稱為 「 符號常數 」 或 「"資訊清單常數。 識別項,表示陳述式或運算式稱為"macros"。 前置處理器本文中的只 」 巨集 」 一詞。
在程式的原始程式文字,或某些其他前置處理器命令的引數中辨識的巨集名稱後,它會被視為該巨集的呼叫。 巨集主體的複本就會取代巨集名稱。 如果巨集接受引數,巨集名稱後面的實質引數取代巨集內的型式參數。 取代已處理的一份本文中的巨集呼叫的程序,稱為 「 擴充 」 的巨集呼叫。
實際上,有兩種類型的巨集。 「 類似物件的 「 巨集會採取任何引數,而"函式類似 」 巨集可定義成接受引數,使它們看起來和作用類似函式呼叫。 因為巨集並不會產生實際的函式呼叫,您有時會使程式執行更快的函式呼叫取代巨集。 (在 C++,內嵌函式是通常理想的作法)。 不過,如果您未定義,請小心使用這些巨集可以產生問題。 您可能保留最適當的優先順序,在運算式中使用引數的巨集定義中使用括號。 此外,巨集可能無法正確處理具有副作用的運算式。 請參閱getrandom中的範例 # define 指示詞如需詳細資訊。
一旦定義了巨集,您無法為不同的值,而不用第一個移除原始定義以重新它的定義。 不過,您可以重新定義完全相同的定義將巨集。 因此,相同的定義可以出現在程式中的一次以上。
#Undef 指示詞移除該定義的巨集。 一旦您已移除該定義,您可以重新定義巨集使其不同的值。 # Define 指示詞和 # undef 指示詞討論#define和#undef指示詞,分別。
如需詳細資訊,請參閱: