if else
的嵌套結構判斷邏輯do{...}while(0)內部定義的代碼只執行一次架構
if (one == true) { if (two == true) { if (three == true) { //第三個依賴第二個判斷結果,第二個依賴第一個判斷結果。 //... } } }
能夠使用do{...}while(0)la來簡化,既而後面的判斷依賴前面的判斷結果,那麼全部的條件都去判斷是否等於false
,等於false
的直接break
跳出do while
循環。這樣的代碼風格就簡化不少了。spa
do { if (one == false) { break; } if (two == false) { break; } if (three == false) { break; } } while (0);
宏定義code
#define swap(a,b) {int t=a;a=b;b=t;}
內核中因爲不一樣架構的限制,不少時候會用到空宏,。在編譯的時候,這些空宏會給出warning,爲了不這樣的warning,咱們能夠使用do{...}while(0)來定義空宏:
#define EMPTYMICRO do{}while(0)
這種狀況不太常見,由於有不少編譯器,已經支持空宏。three