首页 > 代码库 > do{}while(0)在宏定义中作用
do{}while(0)在宏定义中作用
在开源代码中看到,宏定义经常这样用
变为
这样直接加个花括号不久行了,为什么还用do......while()?假如加上花括号
变为
#define some() do { do_somt_thing(); } while (0)
为什么这样用?
可以试一下,假如一个普通宏定义
#define some(x) Fun1(x);Fun2(x)
if(condition) some(x);
变为
if(condition) Fun1(x); Fun2(x);
这样直接加个花括号不久行了,为什么还用do......while()?假如加上花括号
#define some(x) {Fun1(x);Fun2(x);}
if(condition) some(x); else someelse(x);
变为
if(condition) { Fun1(x); Fun2(x); };//多了个分号 else someelse(x);
do{}while(0)在宏定义中作用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。