首页 > 代码库 > do while(false)实用技巧
do while(false)实用技巧
今天看项目源码的时候发现有些地方用了do{} while(false)的用法,查了下发现这样确实有些优点,mark下。
1.最重要的优点,用在略微复杂的宏定义中。
#define AB1 a; b; // x, 下面语句b不能被执行: if (cond) AB1; #define AB2 { a; b; } // x, 下面语句编译出错:if (cond) AB2; else ...; #define AB3 a, b // x, 有运算符优先级问题 #define AB4 do { a; b; } while (0)
2.当你执行一段代码到一半,想跳过剩下的一半的时候,如果你正处于do while循环中,则能用break达到这个目的。如下伪代码:
int foo(){ somestruct *ptr = malloc(...); dosomething...; if(error) goto END; dosomething...; if(error) goto END; dosomething...;END: free(ptr); return 0;}
避免goto语句的话,实用do while(false)就能很好的解决。
int foo(){ somestruct *ptr = malloc(...); do { dosomething...; if(error) break; dosomething...; if(error) break; dosomething...; } while(0); free(ptr); return 0;}
do while(false)实用技巧
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。