do{...}while(0)

1、簡化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);

 

2、輔助定義複雜的宏,避免引用的時候出錯

宏定義code

#define swap(a,b)    {int t=a;a=b;b=t;}

內核中因爲不一樣架構的限制,不少時候會用到空宏,。在編譯的時候,這些空宏會給出warning,爲了不這樣的warning,咱們能夠使用do{...}while(0)來定義空宏:
#define EMPTYMICRO do{}while(0)
這種狀況不太常見,由於有不少編譯器,已經支持空宏。three

相關文章
相關標籤/搜索