do while(0)在宏中的使用
来源:互联网 发布:js修改css样式display 编辑:程序博客网 时间:2024/04/19 16:12
反斜线代表该行未结束,会串接下一行。而如果宏里有多过一个语句(statement),就需要用 do { /*...*/ } while(0) 包裹成单个语句,否则会有如下的问题:
#define M() a(); b()if (cond) M();else c();/* 预处理后 */if (cond) a(); b();else /* <- else 缺乏对应 if */ c();
只用 {} 也不行:
#define M() { a(); b(); }/* 预处理后 */if (cond) { a(); b(); }; /* 最后的分号代表 if 语句结束 */else /* else 缺乏对应 if */ c();
用 do while 就行了:
#define M() do { a(); b(); } while(0)/* 预处理后 */if (cond) do { a(); b(); } while(0);else c();
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) 在宏定义中的作用
- 尝试的SSM框架(留给自己纪念)
- Android中的Service 与 Thread 的区别
- 访问子结点childNodes
- mui 下拉刷新 上拉加载
- 【LeetCode】马三来刷题之Valid Anagram
- do while(0)在宏中的使用
- jUnit4单元测试详解
- 第三方登陆使用
- python List与String 转化问题
- 垃圾收集器(整理版)
- 侧滑菜单栏使用DrawerLayout和NavigationView实现
- 数组排序、查找
- iOS 10相机 权限
- 同一服务器部署多个tomcat时的端口号修改详情