cocos2d-x系列笔记技巧篇(1)---关于do{}while(0)和CC_BREAK_IF的用法
2013-03-03 22:11
417 查看
看过cocos2d-x 自带demo的朋友相信很多人都会发现demo中用了很多do{}while(0)和CC_BREAK_IF宏.他们是做什么用的呢?
其实这个是c++中的一个技巧.
我们时常会调用某个函数来创建一个对象,但由于内存不足或其他异常情况发生时对象可能会创建失败,创建失败我们就要结束当前程序转到错误处理地方去处理错误或释放已生成的对象.
我们可以看到,代码中用了很多goto语句.c++中虽然有goto,但却是极力不推崇这么做.因为goto一旦滥用会令程序的运行琢磨不定,给开发带来很多不必要的麻烦.这时do{}while(0) 就要出场了.
对比上一段代码,这段代码是不是显得简洁了许多.而宏CC_BREAK_IF的作用就是代替if(!o1) break;这样的代码,所以上面if(!o1) break;这样的代码完全可以替代为CC_BREAK_IF(!o1);
这就是cocos2d-x中经常见到的do{}while(0)和CC_BREAK_IF的用法.
其实这个是c++中的一个技巧.
我们时常会调用某个函数来创建一个对象,但由于内存不足或其他异常情况发生时对象可能会创建失败,创建失败我们就要结束当前程序转到错误处理地方去处理错误或释放已生成的对象.
int* p1 = new int; CCObject* o1 = fun1(); if(!o1) goto catchcode; CCObject* o2 = fun2(); if(!o2) goto catchcode; //如果代码都执行成功 delete p; p = NULL; //如果o1 o2有发生错误 catchcode: delete p; p = NULL;
我们可以看到,代码中用了很多goto语句.c++中虽然有goto,但却是极力不推崇这么做.因为goto一旦滥用会令程序的运行琢磨不定,给开发带来很多不必要的麻烦.这时do{}while(0) 就要出场了.
int* p1 = new int; do { CCObject* o1 = fun1(); if(!o1) break; CCObject* o2 = fun2(); if(!o2) break; }while(0) delete p; p = NULL;
对比上一段代码,这段代码是不是显得简洁了许多.而宏CC_BREAK_IF的作用就是代替if(!o1) break;这样的代码,所以上面if(!o1) break;这样的代码完全可以替代为CC_BREAK_IF(!o1);
这就是cocos2d-x中经常见到的do{}while(0)和CC_BREAK_IF的用法.
相关文章推荐
- Cocos2D-x中关于do{}while(0)和CC_BREAK_IF的用法
- Cocos2D-x中关于do{}while(0)和CC_BREAK_IF的用法
- Cocos2D-x中关于do{}while(0)和CC_BREAK_IF的用法
- cocos2d-x系列笔记技巧篇(2)---关于CREATE_FUNC宏的用法
- cocos2d-x系列笔记技巧篇(2)---关于CREATE_FUNC宏的用法
- cocos2d-x系列笔记技巧篇(2)---关于CREATE_FUNC宏的用法
- do{}while(0)与CC_BREAK_IF的绝妙搭配
- do{}while(0)与CC_BREAK_IF的绝妙搭配
- cocos2d-x系列笔记技巧篇—关于CREATE_FUNC宏的用法 分类: cocos2d代码编写 2015-07-29 08:50 7人阅读 评论(0) 收藏
- cocos2d-x系列笔记技巧篇—关于CREATE_FUNC宏的用法
- 笔记:循环(for, if, do...while, break, switch)
- do{}while(0)与CC_BREAK_IF的绝妙搭配
- linux shell编程控制结构:expr、let、for、while、until、shift、if、case、break、continue、函数、select 学习笔记
- C语言中流程控制语句(if,switch,for,while,do-while,continue,break,return)
- #define fun() do {a***; b***;} while(0)在if语句后的用法探讨
- linux shell编程控制结构:expr、let、for、while、until、shift、if、case、break、continue、函数、select 学习笔记
- 【c++技巧】do...while(0)在宏定义中的巧妙用法
- 【Swift】学习笔记(五)——控制语句(if,switch,for-in,for,while,do-while)
- C语言学习3:if ,for,do..while,continue和break,goto,swtich,输入输出缓存区,随机数产生
- 并发编程学习笔记 三------- 关于在if中和while中使用wait(),唤醒之后的区别