c程式定義巨集時使用do while 0 的好處。

2021-08-29 03:57:43 字數 598 閱讀 6214

比如我們定義swap函式,我們一般這麼寫,

#define swap(a,b) \

如果我們如下使用,不會有問題,

int main()

因為我們展開就變成如下,

int main()

; return 0;

}

但是我們如果如下使用,就會有問題,

int main()

因為我們展開,變成如下,

int main()

; else

swap(y,z);

return 0;

}

看到第乙個swap展開後,後面的;號嗎?程式會認為if已經結束,那麼else就會認為沒有對應匹配的if從而編譯失敗。

使用do while如下,

#define swap(a,b) \

do \

while(0)

使用的重點是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...