do{...} while(0)
来源:互联网 发布:淘宝家具店网页模板 编辑:程序博客网 时间:2024/06/05 13:32
使用do{ } while(0);有什么好处???
http://bbs.csdn.net/topics/390361821?page=1整理论坛讨论
当你执行一段代码到一半,想跳过剩下的一半的时候,如果你正处于do while循环中,则能用break达到这个目的。如:
do
{
我执行
我执行。。
我再执行。。。
if (有什么条件满足了我)
{
呀,我想跳到另外一段代码了,剩下的不执行了,可是不建议用goto语句,怎么办呢?
break;/*看我的*/
}
我有可能被执行
我有可能被执行。
我有可能被执行。。
}while(false)
为了宏展开的时候不会出错。
如过直接放在花括号会出错的,不如
1
#define DO_SOMETHING {int time = 100 ;make_love(i);}
下面是使用的地方
1
2
if
(you->strong())DO_SOMETHING;
else
..;
展开后是这样的
1
2
3
4
if
(you->strong())
{
int
time
= 100 ;make_love(i);}
;
else
..;
那么编译就会出错,可以验证使用d0{}while(0)就不会出错
linux内核源码经常见这玩意
8楼和24楼分别说了do...while(0)的两个不同应用。特别是在含多条语句的宏里面用得比较多
假如啊a, b分别是两条C语句,定义一个顺序执行他们的宏有几种写法,比如
1
2
3
4
#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)
前面几个都是有问题的,只有do while(0)解决得比较好。
0 0
- do...while(0)
- do{}while(0)
- [转载]Do{}While(0)
- do {} while (0) 用法
- do-----while(0)
- do...while(0)
- do{}while(0)妙用
- do while(0) 用法
- do {} while (0)
- do..while(0)使用
- do{ ... } while(0)
- do-while(0)妙用
- do...while(0)用法
- do{...} while(0);
- do{ ... } while(0)
- do...while(0) 妙用
- 宏do{}while(0)
- do{}while(0)
- 前端面试三
- 数据库系统原理(4)--数据依赖与关系模式规范化
- Radioactive
- 香港大学推荐的50本经典书籍
- php rsa加密解密实例
- do{...} while(0)
- lintcode——在O(1)时间复杂度删除链表节点
- RK3399 uboot MIPI屏调试总结
- SpringMVC国际化
- 删除链表中等于给定值val的所有节点
- html meta中的viewport指令
- C/C++面试重点
- $.post()的dataType类型参数与Javascript的eval()函数
- GeekBand C++ 设计模式 第二周笔记