您的位置:首页 > 其它

do....while(0),编译器会自动优化

2009-07-05 10:10 323 查看
do

{

....

}while(0)

#define foo(params) /
do{ /
//instructions /
}while(0)

为什么要用其do...while(0)的根本愿意在于你的#define 中超过两条表达式(包括两条)以上,下面的例子如果你的#define只有一条,那do...while(0)就没有意义了~~

if(x = 1)

foo(x);

else

...

其实编译器并不会增加更多的指令,起初我认为可能会增加额外的指令,没想到C编译器竟然是自动对条件0的代码进行过优化的。

请看来在c-faq的解释。

http://c-faq.com/cpp/multistmt.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐