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)() 调用相应的函数即可。

思考一下这样写有什么好处? 应该是化繁为简,方便得创建结构相似不同函数名的函数。

   

原文地址:https://www.cnblogs.com/onlycxue/p/3256236.html