|
最近公司的一个项目是做一款手游的服务器端开发,使用的是C++,不过为了以后的跨平台,所以使用的基本都是标准C++的东西,用到的一些网络库、线程库 等等也都是跨平台的,以后一一分享给大家,今天要给大家分享的是一些常用的宏定义,大家可以放到一个自定义的 h 头文件中,方便以后工程复用!
- #ifndef SAFE_DELETE
- #define SAFE_DELETE(p) { if(p){ delete(p); p = NULL; } }
- #endif
- #ifndef SAFE_DELETE_ARRAY
- #define SAFE_DELETE_ARRAY(p) { if(p){ delete[] p; p = NULL; } }
- #endif
- #ifndef SAFE_RELEASE
- #define SAFE_RELEASE(p) { if(p){ p->Release(); p = NULL; } }
- #endif
复制代码
再有就是在项目中封装了很多类,但是有很多属性呢,为了数据的封装性,声明为私有了,所以要访问的时候就得给这个私有的成员变量添加 get 和 set 函数。在其他语言比如:C# 或者 Java 中可能加这个很方便,但是C++中没有。于是为了以后写代码方便,直接定义了这么一个宏,自动添加 private 私有类型成员变量和 public 共有类型的 get 和 set 函数。很是方便啊。宏定义如下:
- #define PropertyBuilderByName(type, name)\
- private:\
- type m_##name;\
- public:\
- inline void set_##name(type v) {\
- m_##name = v;\
- }\
- inline type get_##name() {\
- return m_##name;\
- }
复制代码
那个反斜线 \ 不要丢了哈,宏定义中的 \ 表示换行的意思!
使用起来就很简单喽,比如我定义一个 CBox 盒子类,盒子肯定会有宽和高么,于是我就这样定义:
- class CBox
- {
- public:
- CBox();
- ~CBox();
- PropertyBuilderByName(int, width);
- PropertyBuilderByName(int, height);
- };
- CBox::CBox()
- {
- }
- CBox::~CBox()
- {
- }
复制代码
大家看到了吧,代码很简洁,使用起来也比较简单方便:
- CBox box;
- box.set_height(2);
- box.set_width(3);
复制代码
好了,先写到这里吧,以后有其他方便常用的宏定义再分享给大家,如果大家有更好的宏定义也可以跟帖回复哦! |
上一篇: C++的MD5加密代码下一篇: 推荐给大家一款 json 解析库 jsoncons
|