cocos2d-x-3.1 经常使用宏 (coco2d-x 学习笔记五)
在代码中使用这些宏,能够降低敲键盘的次数,从而提高编写效率。
与节点属性(property)相关的
| CC_PROPERTY_READONLY |
| CC_PROPERTY_READONLY_PASS_BY_REF |
| CC_PROPERTY |
| CC_PROPERTY_PASS_BY_REF |
| CC_SYNTHESIZE_READONLY |
| CC_SYNTHESIZE_READONLY_PASS_BY_REF |
| CC_SYNTHESIZE |
| CC_SYNTHESIZE_PASS_BY_REF |
| CC_SYNTHESIZE_RETAIN |
详细定义见CCPlatformMacros.h。这些主要是为了模拟objective-C下的@property, readonly, retain, @synthesize等keyword。
与命名空间(namespace)相关
| NS_CC_BEGIN |
| NS_CC_END |
| USING_NS_CC |
详细定义见CCPlatformMacros.h。
与节点的创建方法(node, create)相关
| CREATE_FUNC |
| NODE_FUNC |
详细定义见CCPlatformMacros.h。
与内存管理相关
| CC_SAFE_DELETE |
| CC_SAFE_DELETE_ARRAY |
| CC_SAFE_FREE |
| CC_SAFE_RELEASE |
| CC_SAFE_RELEASE_NULL |
| CC_SAFE_RETAIN |
日志
| CCLOG |
| CCLOGERROR |
| CCLOGINFO |
| CCLOGWARN |
详细定义见CCPlatformMacros.h。
断言
| CC_BREAK_IF |
| CC_ASSERT |
| CCAssert |
当中CC_BREAK_IF是在CCPlatformMacros.h中定义的,它用在循环中的条件推断。
CC_BREAK_IF有一个使用很频繁的场合,就是在do{}while(0)中。这个使用语句块的作用还是挺大的。依据GOOGLE编程规范,为了降低代码层次,条件推断应该先进行,不满足则跳过后面代码。跳过有两种方式,一种是return,还有一种是break。前一种方式下,后面的所有代码都不能得到运行;后一种方式必须放在循环或者swich语句块中。假设使用do{}while(0)则能够解决第一种方式后面的代码得不到运行的问题。
CCAssert定义在ccMacros.h中,它是对CC_ASSERT的封装。与数学相关
| CCRANDOM_MINUS1_1 |
| CCRANDOM_0_1 |
| CC_DEGREES_TO_RADIANS |
| CC_RADIANS_TO_DEGREES |
详细定义见ccMacros.h。产生随机数与弧度与角度的转换。
cocos2d-x-3.1 经常使用宏 (coco2d-x 学习笔记五)的更多相关文章
- (C/C++学习笔记) 五. 常变量(只读变量)和宏
五. 常变量(只读变量)和宏 ● 常变量 常变量 #include <iostream.h> //预处理文件 int main() { const d ...
- Cocos2d-x学习笔记之常用的宏
NS_CC_BEGIN:Cocos2D-x命名空间开始,属于Cocos2D-x的类的定义以该宏开头,用以代替C++中的“namespace cocos2d{”. NS_CC_END:Cocos2D-x ...
- C++学习笔记 宏 const 内联 枚举
宏, const变量, 内联, 枚举 宏 宏定义: 宏即宏替换,在C语言源程序中允许用一个标识符来表示一个字符串,称为宏,关键字 define,在所有使用到宏的地方都只是直接的替换而不做任何类型检查 ...
- cocos2d学习笔记
doxygen工具 生成cocos2d的api文档 位图字体编辑工具 Glyph Designer http://www.71squared.com/glyphdesigner 收费的 CCLabl ...
- [原创][LaTex]LaTex学习笔记之框架及宏包
0. 简介 LaTex在书写文档时的最基本单元就是首部的写作,变相的也可以说是头文件.本文章就来总结一下文档的基本格式和常用宏包. 1. 基本单元 基本单元需要对LaTex语法有一定的了解,这个很简单 ...
- PROCESS_YIELD()宏使用及过程分析<contiki学习笔记之八>
好吧,昨晚上研究了switch()的底层实现原理--发现它并不是一般C语言教科书上那样所言,当然,这对于本身就非常熟悉汇编的同学来说,是小菜一碟.世界上,很多事情是巧合与必然的结合体,没有无缘无故的爱 ...
- PROCESS_YIELD()宏和C语言的switch语句< contiki学习笔记之七>
写在前面: 按照main()函数的代码一行一行的分析,该是看到了 etimer_process 这个位置.但是etimer_process实现里的一个宏 PROCESS_YIELD()引出了很多故事 ...
- Cocos2d-x 3.x学习笔记(一):开始Cocos2d之旅
首先,进入官网下载cocos2d-x:http://www.cocos.com/download/,当然你需要注册一个账号才可以下载. 接下来需要跟着官网的配置文档配置一下开发环境,不得不说,Coco ...
- C Primer Plus(第五版)学习笔记-可变宏:...和__VA_ARGS__
一 .__VA_ARGS__ P454 所讲printf()这些输出函数的参数是可变的,在调试程序时,可能希望定义参数为可变的输出函数, 那么可变参数宏会是一个选择,例如: #define DEBUG ...
随机推荐
- log4net使用特定的解释
说明:该程序演示如何使用log4net记录日志信息. log4net它是-known开源组件的日志记录功能.使用log4net可以很容易地将信息记录到文件.控制台.Windows事件日志和数据库(含有 ...
- Cocos2d-x学习笔记(9)(CCTextFieldTTF使用输入框)
1.CCTextFieldTTF创建和使用 CCTextFieldTTF::create(const char* placeholder,const char* fontName.float font ...
- 编程算法 - 分割数 代码(C)
分割数 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 有n个无差别的物品, 将它们划分成不超过m组, 求出划分方法数模M的余数. 比如: n= ...
- 房费制 之 登录BUG
声明:以下内容只有当你登录到一个username同时,学生不能申请多次登录. 说是BUG,事实上这也不是一个BUG,仅仅是想出一个办法,解决一个大家好多人都没有解决的问题.以下就给大家 ...
- axWindowsMediaPlayer1获取音频长度
OpenFileDialog openFileDialog1 = new OpenFileDialog { InitialDirectory = "c:\\", Filter = ...
- Android:创建耐磨应用 - 语音操作
加入语音处理能力(Adding Voice Capabilities) 语音操作为用户体验可穿戴的重要组成部分,它允许用户快速.免提方式来运行操作. Wear它提供了两种类型的语音操作的: 该系统提供 ...
- JVM内存结构、垃圾回收那点事(转)
翻看电脑的文件夹,无意看到了9月份在公司做的一次分享,浏览了一下"婆婆特",发现自己在ppt上的写的引导性问题自己也不能确切的回答出来,哎,知识这东西,平时不常用的没些日子就生疏了 ...
- JAVA学习 分析Servlet
一个.什么是Servlet Servlet是一种在server端执行的java编写的程序,是依照Servlet规范编写的一个java类. 二.Servlet的工作过程 如图所看到的:为了实现客户与se ...
- ramoops具体失败原因来解释驱动寄存器
正在使用linux的ramoops驱动器模块,当编译完成加载.查找驱动程序加载失败.显然,直接用内核代码,为什么会出现这种情况? 第一眼ramoops初始化代码: 180 static int __i ...
- Java拾遗(一):浅析Java子类和父类的实例化顺序 及 陷阱
本文主要介绍Java里经常使用的子类和父类的变量实例化顺序及陷阱,并结合一个Android实例来探讨此问题.日后编程中应尽量避免此陷阱. 首先看以下一段代码: 定义一个虚类Server.java pa ...