宏定义 do while(0)分析
来源:互联网 发布:最红网络歌曲 编辑:程序博客网 时间:2024/05/20 14:25
在宏定义里面经常看到do{...}while(0)这样的语句。
确实很让人疑惑,do while(0)就是让代码只执行一次,何必这样呢,为什么需要用do while呢。
其实,宏定义就是一个代码替换的过程。
#define CODE_SEG(a) printf("sample macro:%s\n",a)
那么在出现了CODE_SEG(some_str)的地方,它都会在编译时被替换成printf("sample
macro:s\n",some_str)
那么,我们写代码的习惯都是
...
char*s="hello world";
CODE_SEG(s); //我们会习惯性地加上分号
...
这时,可以编译通过,因为 CODE_SEG(s); 被替换成了printf("sample macro:%s\n",s);
但是,如果我们的宏里面有不止一条语句,比如
#define CODE_SEG(a) {printf("sample macro:%s\n",a);printf("done\n");}
这样就行不通了,因为CODE_SEG(s); 会被替换成
{printf("sample macro:%s\n",a);printf("done\n");}; 最后面这个分号回导致编译不通过
因此,通常用do while(0)来包裹,这样就可以避免这个分号的问题
#define CODE_SEG(a) do{printf("sample macro:%s\n",a);printf("done\n");}while(0)
CODE_SEG(s); 会被替换成
do{printf("sample macro:%s\n",a);printf("done\n");}while(0);
最后的这个分号此时就是恰到好处了,编译通过。
- 宏定义 do while(0)分析
- 宏定义中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)宏定义的好处
- 宏定义中的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)
- 汇编学习笔记第0~3章:基础知识-CUP工作原理-寄存器
- UIWebView存储网页
- Ubuntu 命令收集(持续更新中...)
- Java缓存新标准(javax.cache)
- linux 模块编译步骤
- 宏定义 do while(0)分析
- makefile 个人小结
- TCP报文格式
- Diff/Patch 工具的使用
- c++面试题之 多继承内存结构
- 同步/异步与阻塞/非阻塞的区别
- C语言中return与_exit的区别
- php smarty
- 2013级C++第16周(春)项目——二进制文件及字符流