为什么使用do{...} while(0) ?
来源:互联网 发布:索尼lt18i软件 编辑:程序博客网 时间:2024/04/27 03:06
在一些函数的代码里偶尔会看到如标题所述的用法,再此总结一下:
首先要说的是:do {...}while(0)这种语句主要用在宏定义里面
考虑下面几种代码情况:
1)
if ( ...) FUN1(x);else FUN2(y);从这里看,上述代码看起来没有任何,无非就是一个简单的if else条件语句。但是,从代码里你看到了FUN1和FUN2,这两个函数,不过有可能他们都是宏定义。例如:
#define FUN1(x) x=1;x++;这样的话,如果把这段宏放到上述代码里,明显是有问题的,代码如下:
if ( ...) x=1;x++;else FUN2(y);
if分支出现问题了,因为if后仅能放置一条语句或一个语句块。这显然是不对的。那如果把宏加上括号后定义是否可以呢?
#define FUN1(x) {x=1;x++;}if else代码变成
if ( ...) {x=1;x++;};else FUN2(y);注意上述代码最后的分号,因为C/C++语言的习惯是每条语句后加分号,但这样显然不对了,现在do{}while(0)就派上用场了,代码如下
#define FUN1(x) do{x=1;x++;}while(0)if ( ...) do{x=1;x++;}while(0);else FUN2(y);这是没有问题的,所以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)的使用
- (英文)为什么Linux内核中,许多#defines都使用了 do { ... } while(0)?
- 宏定义为什么要使用do{……}while(0)形式
- 为什么宏定义总是要使用do-while语句呢?
- do{}while(0)的使用技巧
- 使用do{ } while(0)的好处
- do{}while(0)的使用(COPY)
- 宏定义中do while(0)使用
- 感悟一
- message loop
- 用到extern "C"的两种情况
- org.springframework.beans.NotWritablePropertyException,请高人指点...
- iOS游戏开发 几个有利工具
- 为什么使用do{...} while(0) ?
- 使用Jlink仿真及ADS1.2调试(ok2440)
- Java技术与Java虚拟机
- JQuery 操作Select
- Linux中删除文件中空行的脚本
- WM_NCHITTEST消息欺骗Windows
- short类型相关
- 一个很好的makefile教程3(转载)
- iPhone开发随想:rand()还是arc4random()