强大的 #define XXX / #include XXX / #undef 用法

本文介绍了如何巧妙地结合#define、#include和#undef在C++中定义枚举和类,通过DECLARE_SAMPLE_EVENT宏简化事件类型和处理类的创建。这种做法允许在添加新事件类型时减少代码改动,提高代码质量。
摘要由CSDN通过智能技术生成

今天看到一种宏定义#define结合#include的用法很强大,把心得记录下来分享。

 

头文件 sample.h

#ifdef DECLARE_SAMPLE_EVENT

DECLARE_SAMPLE_EVENT(EVENT1, CEvent1, "事件1")

DECLARE_SAMPLE_EVENT(EVENT2, CEvent2, "事件2")

DECLARE_SAMPLE_EVENT(EVENT3, CEvent3, "事件3")

#endif

 

然后在头文件 event.h 中,我想对event定义一个枚举和为每个状态定义一个类

// 对事件类型枚举定义

enum E_EVENT

{

#define DECLARE_SAMPLE_EVENT(event, classname, note)    event,

#include "sample.h"

#undef DECLARE_SAMPLE_EVENT

    EVENT_MAX

};

这里很巧妙的把 DECLARE_SAMPLE_EVENT(event, classname, note)用宏定义为了event,

也就是 DECLARE_SAMPLE_EVENT(EVENT1, classname, "事件1") 变成了 EVENT1

 

#include "sample.h",相当于把sample中里的代码引用了进来。

于是宏定义还原后,代码内容就是<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值