VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 928|回复: 2

[分享] C++中的常用宏定义

[复制链接]
51_avatar_middle
online_admins 发表于 2017-11-29 00:30:35 | 显示全部楼层 |阅读模式
最近公司的一个项目是做一款手游的服务器端开发,使用的是C++,不过为了以后的跨平台,所以使用的基本都是标准C++的东西,用到的一些网络库、线程库 等等也都是跨平台的,以后一一分享给大家,今天要给大家分享的是一些常用的宏定义,大家可以放到一个自定义的 h 头文件中,方便以后工程复用!

  1. #ifndef SAFE_DELETE
  2. #define SAFE_DELETE(p) { if(p){ delete(p); p = NULL; } }
  3. #endif

  4. #ifndef SAFE_DELETE_ARRAY
  5. #define SAFE_DELETE_ARRAY(p) { if(p){ delete[] p; p = NULL; } }
  6. #endif

  7. #ifndef SAFE_RELEASE
  8. #define SAFE_RELEASE(p) { if(p){ p->Release(); p = NULL; } }
  9. #endif
复制代码


再有就是在项目中封装了很多类,但是有很多属性呢,为了数据的封装性,声明为私有了,所以要访问的时候就得给这个私有的成员变量添加 get 和 set 函数。在其他语言比如:C# 或者 Java 中可能加这个很方便,但是C++中没有。于是为了以后写代码方便,直接定义了这么一个宏,自动添加 private 私有类型成员变量和 public 共有类型的 get 和 set 函数。很是方便啊。宏定义如下:
  1. #define PropertyBuilderByName(type, name)\
  2.     private:\
  3.         type m_##name;\
  4.     public:\
  5.     inline void set_##name(type v) {\
  6.         m_##name = v;\
  7.                 }\
  8.     inline type get_##name() {\
  9.         return m_##name;\
  10.                 }
复制代码


那个反斜线 \ 不要丢了哈,宏定义中的 \ 表示换行的意思!

使用起来就很简单喽,比如我定义一个 CBox 盒子类,盒子肯定会有宽和高么,于是我就这样定义:
  1. class CBox
  2. {
  3. public:
  4.         CBox();
  5.         ~CBox();

  6.         PropertyBuilderByName(int, width);
  7.         PropertyBuilderByName(int, height);
  8. };

  9. CBox::CBox()
  10. {
  11. }

  12. CBox::~CBox()
  13. {
  14. }
复制代码


大家看到了吧,代码很简洁,使用起来也比较简单方便:
  1. CBox box;
  2. box.set_height(2);
  3. box.set_width(3);
复制代码


好了,先写到这里吧,以后有其他方便常用的宏定义再分享给大家,如果大家有更好的宏定义也可以跟帖回复哦!




上一篇:C++的MD5加密代码
下一篇:推荐给大家一款 json 解析库 jsoncons
06_avatar_middle
在线会员 发表于 2017-11-29 15:25:28 | 显示全部楼层
太棒了,非常实用!!!C++中的常用宏定义
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-6-17 02:02

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表