Linux 编程的tricky 一:宏定义中的do-while(0)
来源:互联网 发布:linux 调度命令 编辑:程序博客网 时间:2024/05/16 05:03
1.使用do-while(0):为了能够在条件语句中使用复杂的宏定义。
#include <stdio.h>#include <stdlib.h>#define FOO(x) \printf("x=%d\n",x); \x++;#define FOO2(x) \do{ \ printf("x=%d\n",x); \ x++; \}while(0)int main(){ printf("Hello world!\n"); int x = 5; if(x==5)FOO2(x); printf("x1=%d\n",x); if(x==5)FOO(x); printf("x2=%d\n",x); return 0;}
调用FOO(x)在条件语句if(x==5)之后,按照预期,此时x=6,应当不执行该调用。确实,并没有执行printf("x=%d",x);但是执行了x++的操作,导致x2=7.
但是单纯把宏定义的多条指令用{}括起来,问题出在调用FOO(x)后的 " ; ".如果不写该分号,看起来不像函数调用,但是写了这个分号。在{}之后就有个分号,把if语句结束了。如果if后面有else,则该else就无法匹配了。(编译报错)
- Linux 编程的tricky 一:宏定义中的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)的妙处
- c 宏定义中的 do {} while(0) 的使用
- 宏定义中的do while
- linux 宏定义 do while
- do{}while(0)宏定义的好处
- do{}while(0)宏定义的好处
- do{}while(0)宏定义的好处
- yum install google-chrome-stable
- QT类大全
- ZT:悟透JavaScript
- struts2 result type 中的 redirct 和 chain
- 剑指offer面试题38 数在有序数组中出现的次数,二分找第一个和最后一个出现的这个数字
- Linux 编程的tricky 一:宏定义中的do-while(0)
- Android的联通性---会话发起协议(SIP)(二)
- TCP/IP UDP
- IBM实习生笔试题目(2)
- 电话号码测试用例
- VIM使用小记
- Linux下Apache PHP MYSQL 默认安装路径
- java练笔-计算器
- Android联通性---会话发起协议(SIP)(三)