VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 698|回复: 2

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

[复制链接]
51_avatar_middle
online_admins Syc 发表于 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
在线会员 angeltony 发表于 2017-11-29 15:25:28 | 显示全部楼层
太棒了,非常实用!!!C++中的常用宏定义

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

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

GMT+8, 2018-12-11 22:47

Powered by Discuz! X3.4

© 2009-2018 cctry.com

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