以這個巨集定義為例:
#define err_exit(m) \
do \
while(0)其中的」\」是怎麼回事?
(1)對於有引數的巨集定義,巨集定義時,在巨集名與帶引數的括號之間不應加空格,否則將空格以後的字元都作為替代字串的一部分。
(2)帶引數的巨集定義只是進行簡單的字元替換,巨集展開則是在編譯前進行的,在展開時並不分配記憶體單元,不進行值得傳遞處理,因此替換不會占用執行時間,只占用編譯時間。
(3)巨集不存在型別問題,巨集名無型別,巨集的引數也無型別,只是乙個符號代表,展開時代入指定的字串即可,巨集定義時,字串可以是任何型別的資料。
有時候乙個語句太長,一行寫不下,或者顯得不美觀,為了便於閱讀,可以將較長的語句拆分成兩行甚至多行,除了最後一行之外,在每乙個分行後面加乙個反斜槓「\」,這樣編譯的時候,系統會自動將這幾個分行讀成乙個語句處理。而巨集定義要求
c語言中,巨集定義太長,用反斜槓轉義,寫成多行時,反斜槓後不能有空格。
巨集定義中的
劉詩慧rubby的日誌 1 stringizing 字串化操作符 作用 將巨集定義中的傳入引數名轉換成用一對雙引號括起來引數名字串。其只能用於有傳入引數的巨集定 義中,且必須置於巨集定義體中的引數名前。如 define example instr printf the input string is...
巨集定義中的
劉詩慧rubby的日誌 1 stringizing 字串化操作符 作用 將巨集定義中的傳入引數名轉換成用一對雙引號括起來引數名字串。其只能用於有傳入引數的巨集定 義中,且必須置於巨集定義體中的引數名前。如 define example instr printf the input string is...
c 中的巨集定義
一 不帶引數的巨集定義 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字串 其中的識別符號就是所謂的符號常量,也稱為 巨集名 預處理 預編譯 工作也叫做巨集展開 將巨集名替換為字串。掌握 巨集 概念的關鍵是 換 一切以換為前提 做任何事情之前先要換,準確理解之前就要 換...