c++ 的宏定义 有助于提高开发的效率,方便快捷,并且提高程序的执行效率
宏可以定义一个带参数的宏 或者 不带参数的宏
带参数的宏定义 宏名和参数之间一定不能有空格,否则参数会被当做宏体处理
带参数宏定义:#define <宏名>(<参数表>) <宏体>
eg:#define SUB(a,b) a-b
#define NS_CC_BEGIN namespace cocos2d {
#define NS_CC_END }
#define USING_NS_CC using namespace cocos2d
#else
#define NS_CC_BEGIN
#define NS_CC_END
#define USING_NS_CC
#endif
* define a create function for a specific type, such as CCLayer
* @__TYPE__ class type to add create(), such as CCLayer
*/
#define CREATE_FUNC(__TYPE__) \
static __TYPE__* create() \
{ \
__TYPE__ *pRet = new __TYPE__(); \
if (pRet && pRet->init()) \
{ \
pRet->autorelease(); \
return pRet; \
} \
else \
{ \
delete pRet; \
pRet = NULL; \
return NULL; \
} \
}
#define CC_ENABLE_CACHE_TEXTURE_DATA 1
#else
#define CC_ENABLE_CACHE_TEXTURE_DATA 0
#endif
这个宏声明了一个protected 属性变量,使用CC_PROPERTY声明的变量可以使用getter获取变量的值,使用setter设置变量的值,当然可以通过此方法声明一个private的属性变量宏,用法一样
#define CC_PROPERTY(varType, varName, funName)\
protected: varType varName;\
public: virtual varType get##funName(void);\
public: virtual void set##funName(varType var);
具体的用法为:
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__
#include "cocos2d.h"
USING_NS_CC;
using namespace std;
class HelloWorld : public CCLayer
{
public:
virtual bool init();
static CCScene* scene();
CREATE_FUNC(HelloWorld);
CC_PROPERTY(unsigned int, _heroID, HeroID);
CC_PROPERTY(string, _heroName, HeroName);
};
#endif // __HELLOWORLD_SCENE_H__
定义一个函数用于生成一个类的实例
#define TESTLAYER_CREATE_FUNC(className) \
static CCLayer* create##className() \
{ return new className(); }
定义一个函数用于生成一个类的实例同时调用上面的方法
#define CF(className) create##className
在这里需要注意的是,定义的get和set方法必须要重写 才能使用,因为他们的格式为virtual
以上所有的宏定义都是参考cocos2dx的源码定义,cocos2dx中定义了非常多的宏,来提高开发效率和程序性能,有兴趣的可以读一下cocos2dx的代码
相关推荐
### C++宏定义详解 #### 一、宏定义概述 宏定义是C++语言中预处理器的一种特性,它允许开发者创建简单的文本替换规则。通过宏定义,开发者可以在编译前阶段将特定的文本模式(宏名)替换为另一段文本(宏定义的...
### C/C++宏定义基础知识详解 #### 一、引言 在C/C++编程语言中,宏定义是一种非常实用的功能,它可以用来简化代码编写过程,提高编程效率,并且有助于代码的可读性和维护性。本文将详细介绍C/C++中的宏定义基础...
根据提供的文档标题、描述以及部分代码内容,我们可以总结出关于C++宏定义的一些实用技巧,特别是涉及到了“#”和“##”的操作符在宏定义中的应用。下面将详细解析这些知识点。 ### C++宏定义基础 在C++中,宏是一...
zfind是本人写的一个简单的C/C++宏定义和类定义搜索工具,z是左的意思,即本人姓氏。取此名字是因为windows下有find命令,为避免冲突。另外本工具是本人在32位WIN7环境下使用的,其余环境本人不保证兼容。 写此工具...
新手入门专用,其实只要看我写的代码,就能快速掌握C++了,本人自己写的,代码简单,通俗易懂,老幼皆宜,除此之外更多源码全都由本人原创完成,适合新手,程序员开发着研究。
在C/C++编程中,宏定义是一种强大的工具,允许程序员在编译期间替换文本。在1999年的ISO C标准(通常称为C99)中引入了一项新特性,即宏可以拥有可变数量的参数,这极大地扩展了宏的使用范围。这种功能使得宏在某些...
平常在开发的时候会用到各种颜色RGB值定义,很多时候需要到绘图里查看各颜色的RGB值。该头文件把各种颜色进行了宏定义,使用时只要包含该头文件即可。 不仅能够加快开发速度,还能使颜色值更加明了,方便阅读代码。
### c与c++头文件兼容宏定义 #### 概述 在软件开发过程中,经常会遇到C和C++代码需要互相调用的情况。由于C和C++编译方式的不同,这通常会导致链接错误或其他编译问题。为了确保这两种语言能够顺利地进行函数调用...
在C++中,函数模板通常是推荐的代码复用手段,因为它能够更好地利用编译器的智能,同时避免了宏定义的一些潜在问题。然而,在某些特定情况下,如简单的文本替换或性能关键的代码段,宏定义仍有其存在价值。理解并...
在IT领域,尤其是在C++和C编程中,数据结构与宏定义是两个极其重要的概念,它们经常出现在面试题中,以考察候选人的基础知识和实际应用能力。数据结构是计算机科学的基础,它涉及到如何有效地存储和组织数据,以便于...
### C++ 常用宏定义详解 #### 防止一个头文件被重复包含 在C++编程中,为了防止一个头文件被多次包含而导致的编译错误,通常会在头文件的开头和结尾处使用预处理器指令来实现。例如: ```cpp #ifndef COMDEF_H #...
在提供的文档"arminfo.doc"中,应该包含了更详尽的关于ARM编译器预定义宏的信息,包括具体的宏定义、用法示例以及可能的注意事项。建议详细阅读这份文档,以获取更全面的了解和实践指导。通过深入理解和熟练运用这些...
含有if的宏定义当宏定义中含有 if 时1) 定义如下宏#define DC(p) if( foo(p) )fun(p)用在下面的环境中if(k>n)DC(k);elseDC(n);宏替换后,如下if(k>n)if( foo(k) )fun(k);elseif( foo(n) )fun( n );可见, 原来的 if 和...
### C++宏的使用总结 #### 一、概述 本文档详细介绍了C++中的宏使用技巧,涵盖了条件包含、条件编译、定义常量、可变参数宏以及宏的组合等多个方面。通过这些实例,可以帮助读者更好地理解和运用宏,从而提高编程...
### C++/C宏定义(define)中#与##的含义及应用 #### 一、引言 在C++和C语言中,预处理器指令`#define`被广泛用于定义宏,这些宏可以包含简单的替换文本,也可以进行复杂的条件判断和参数处理。本文将详细介绍宏...
111&001=110 可以定义这样的宏组合成函数的参数 #defineP10x001L//001 #defineP20x002L//010 #defineP30x004L//100 voidFunc(long){} Func(P1|P2); 可以这样判断某位是否是1 由于001与xxx只有两种状态000或001 比如...
在C++编程语言中,宏定义是一种预处理指令,它允许程序员在编译阶段替换文本。宏函数,尽管不等同于C++中的普通函数,但可以用来实现类似的功能,如参数化代码、条件编译等。在Visual Studio 2012(VS2012)环境下...
解决安装vs2008的MSDN的1330错误中,cab3.cab 无效的数字签名的问题
4. C++宏定义 在C++中,宏定义是使用#define指令来实现的。宏定义只是简单的文本替换,不经过算术法则的计算。例如,`#define SQR(X) X*X`只是将SQR(X)替换为X*X,而不是计算X的平方。 5. C++常量指针 在C++中,...