C/C++中do{...}while(0)的作用
来源:互联网 发布:不用网络的小说软件 编辑:程序博客网 时间:2024/06/05 05:35
do{...}while(0)
这种形式经常用在循环结构中出现,此外在Linux内核中你也会经常看到这种循环结构在宏定义中的应用,这种结构保证了宏定义执行指令的完整性,避免歧义。
举例1(辅助定义复杂的宏):
我们在使用单个语句的宏定义时
#define DOSOMETHING(a,b); do_1(a,b);
这种形式不会出现歧义,然而当你想定义这样的宏,例如:
#define DOSOMETHING(a,b) \
do_1(a,b);\
do_2(a,b); \
这个宏定义的本意是如果代码中出现了DOSOMETHING(a,b)那么do_1(a,b)和do_2(a,b)就都会被执行,因而会在if语句中出现歧义,例如
if(a>b)
DOSOMETHING(a,b);
这种形式在宏定义替换的时候就会出现歧义
if(a>b)
do_1(a,b);
do_2(a,b);
那么do_2(a,b)就一定会被执行,而do_1(a,b)却不一定会被执行,因而出现歧义。
do{...}while(0)用法保证宏定义块的完整性处理。
举例2(定义一个单独的函数块来实现复杂的操作):
当你的功能很复杂,变量很多你又不愿意增加一个函数的时候,do{...}while(0);将你的代码写在里面,里面可以定义变量而不用考虑变量名会同函数之前或者之后的重复。
0 0
- C/C++中do{...}while(0)的作用
- C++: Do { ... } While (0)
- c++中do...while(0)的作用
- C/C++中do...while(0)的妙用
- C语言中do...while(0)的妙用
- C语言中do...while(0)的妙用
- C语言中do...while(0)的妙用-避免goto
- C语言中do...while(0)的妙用
- C/C++中do...while(0)的妙用
- C语言中do...while(0)的妙用
- C语言宏定义中do while(0)的使用
- C语言中#、##和do{}while(0)的高效用法
- do while(0)的作用
- do{}while(0) 的作用
- do while(0)的作用
- do...while(0)的作用
- do...while(0)的作用
- do while(0)的作用
- Duilib教程-控件练习
- ubutun中非root用户使用过程中出现sudo问题
- 初入java
- Linux 学习方法介绍
- LintCode | 68. 二叉树的后序遍历
- C/C++中do{...}while(0)的作用
- 单调递增最长子序列
- maven创建spring项目之后,启动报错java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoade
- HTML-DOCtype
- matlab矩阵的基本操作
- VMware虚拟机上Ubuntu安装TensorFlow 1.0
- Android Studio SVN 使用方法
- Linux下命令使用笔记
- MySQL中tinytext、text、mediumtext和longtext详解