比如我們定義swap函式,我們一般這麼寫,
如果我們如下使用,不會有問題,#define swap(a,b) \
因為我們展開就變成如下,int main()
但是我們如果如下使用,就會有問題,int main()
; return 0;
}
因為我們展開,變成如下,int main()
看到第乙個swap展開後,後面的;號嗎?程式會認為if已經結束,那麼else就會認為沒有對應匹配的if從而編譯失敗。int main()
; else
swap(y,z);
return 0;
}
使用do while如下,
使用的重點是while(0)後面不跟;號。#define swap(a,b) \
do \
while(0)
C 巨集定義 巨集定義求面積
學過c語言的讀者,對巨集定義應該不陌生,同樣在c 中,也可以用巨集定義命令將乙個指定的識別符號來代表乙個字串,巨集定義的作用一般是用乙個短的名字代表乙個長的字串。一般形式為 define 識別符號 字串定義pi的符號常量 define pi 3.14在c 中還可以用 define命令定義帶引數的巨集...
C語言巨集定義的使用
寫好c語言,漂亮的巨集定義很重要,使用巨集定義可以防止出錯,提高可移植性,可讀性,方便性 等等。下面列舉一些成熟軟體中常用得巨集定義。1,防止乙個標頭檔案被重複包含 ifndef comdef h define comdef h 標頭檔案內容 endif 2,重新定義一些型別,防止由於各種平台和編譯...
C 靈活使用C C 巨集定義
靈活使用c c 巨集定義 define巨集定義在c語言中有廣泛使用。對於c 語言,effective c 第二章告訴我們,在c 中盡量用const enum inline替換 define,可以避免很多陷阱。其中const用於定義常量,enum用於定義列舉,inline用於定義內聯函式。儘管 eff...