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

相关文章
相关标签/搜索