2021/3/19

do .. while(0) not in macro

do {
  ...
  ...
} while(0);
一般的說明都是在 MACRO 定義,因為後面那個 ';' 的關係。

如果不是在 macro 。這樣寫有什麼好處呢?
這一篇 有說..
因為在 while() 中,所以 break 有用,就可以把 break 當作 goto 來用..
以上面那個 link 中的 example:
int main()
{
    do{
        if(testOK())
            break;

        if(func2())
            break;

        if(func3())
            break;

        return 1;
    }while(0);

    do_complete();
    
    return 0;
}

沒有留言:

張貼留言