cocos2D-x demo 的源码分析 #define ..##.. 的妙用.
最近在看cocos2d-x 但不知道如何下手,于是先看一下他编译的完成的testcpp的源码.发现了下面一段程序
typedef CCLayer* (*NEWTESTFUNC)(); #define TESTLAYER_CREATE_FUNC(className) \ static CCLayer* create##className() \ { return new className(); } #define CF(className) create##className
#define 用的可以说出神入化了,这里主要考察了两点:
1.#define 的连接符 \
2#define...##....
其中##在define里表示连接的意思, TESTLAYER_CREATE_FUNC(test) 表示我创建了一个如下函数:
static CCLayer* createtest() { return new classtest(); }
然而下面又定义了一个对函数引用的宏 CF(className) ,在使用的时候我们直接CF(clsaaName)() 调用相应的函数即可。
思考一下这样写有什么好处? 应该是化繁为简,方便得创建结构相似不同函数名的函数。