您的位置:首页 > 其它

do{ ...}while(0)应用技巧

2014-07-23 10:08 344 查看
辅助定义复杂的宏

example: #define A(args) do { a(args); b() } while(0);
如果定义#define A(args) a(args);b();
if(i > 0) A(i)
if(i > 0 )
do { a(2);b();} while(0)
或者
while(1)
a(args);b(); 这不是我们想要的,因为第二个b();不会被执行。

代替goto语句,代码流程比较好。int foo(){
somestruct* ptr = malloc(...);
do{
dosomething...;
if(error)
{
break;
}
dosomething...;
if(error)
{
break; //goto free(ptr);
}
dosomething...;
}while(0);
free(ptr);
return 0; }

避免空宏引起的waring
#define B do{ } while(0);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: