使用do while 0 的好處

2021-06-21 05:16:48 字數 878 閱讀 1279

看到乙個比較好的帖子,給大家分享下!

[cpp]view plain

copy

#define lfw(x, y) do  while(0)

[cpp]view plain

copy

_api()  

while(0);  

}  

1.替代{},實現區域性作用域.在一些c的實現裡也可以用.

2.避免使用goto,用break做跳出.

當你執行一段**到一半,想跳過剩下的一半的時候,如果你正處於do while迴圈中,則能用break達到這個目的。如下偽**:

[cpp]view plain

copy

do  

我有可能被執行  

我有可能被執行。  

我有可能被執行。。   

}while(false)  

想跳到這行來,使用break不是很方便嗎?  

假如啊a, b分別是兩條c語句,定義乙個順序執行他們的巨集有幾種寫法,比如

[cpp]view plain

copy

#define ab1    a; b;     // x, 下面語句b不能被執行: if (cond) ab1;

#define ab2     // x, 下面語句編譯出錯:if (cond) ab2; else ...;

#define ab3    a, b      // x, 有運算子優先順序問題

#define ab4    do  while (0)

前面幾個都是有問題的,只有do while(0)解決得比較好。

使用do while 0 的好處

看到乙個比較好的帖子,給大家分享下!cpp view plain copy define lfw x,y do while 0 cpp view plain copy api while 0 1.替代 實現區域性作用域.在一些c的實現裡也可以用.2.避免使用goto,用break做跳出.當你執行一段...

使用do while 0 的好處

dowhile 0 這樣的 一看就不是乙個迴圈,do.while表面上在這裡一點意義都沒有,那麼為什麼要這麼用呢?實際上,dowhile 0 的作用遠大於美化你的 查了些資料,總結起來這樣寫主要有以下幾點好處 1 輔助定義複雜的巨集,避免引用的時候出錯 舉例來說,假設你需要定義這樣乙個巨集 defi...

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

比如我們定義swap函式,我們一般這麼寫,define swap a,b 如果我們如下使用,不會有問題,int main 因為我們展開就變成如下,int main return 0 但是我們如果如下使用,就會有問題,int main 因為我們展開,變成如下,int main else swap y,...