关于C语言下的宏中出现do{}while(0)解读

来源:互联网 发布:新垣结衣身高 知乎 编辑:程序博客网 时间:2024/06/07 09:51

在编写C语言时常会使用这样的宏定义,此宏定义并非自创,但是用得十分普遍

#define max (a, b) \

do{ \

if(a > b){   \

a; \

}else{ \

b; \

} \

}while(0)

上述宏的实际效果就是:

#define max(a, b) (a>b)?a:b


代码中的do{ /*code*/ }while(0)的效果就是让中间的/*code*/执行一次,一般在用宏定义过程时候使用,发现这样可加强代码的可读性,减少代码的重复率,其中的“\”的作用:当代码的一句连续语句比较长时,可以用“\”进行分行(多次分行也支持)

不分行的效果如下:

#define max (a, b)do{if(a > b){ a;}else{ b;}  }while(0)

看起来显然没有分行的可读性高。


0 0
原创粉丝点击