今天看到一种宏定义#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中里的代码引用了进来。
于是宏定义还原后,代码内容就是<