给定一个定义为的枚举:
DEFINE_ENUM(name,enumerators) \
enum name \
{ \
BOOST_PP_SEQ_ENUM(enumerators) \
};
如何定义一个函数,该函数将被定义为 DEFINE_ENUM() 宏的一部分并返回一个包含枚举所有成员的向量?
以下,添加到上面的宏定义的末尾,与我到目前为止的内容一样接近:
std::vector<name> MembersOf(name AnyItem) { \
return {BOOST_PP_SEQ_ENUM(enumerators)}; \
};
但是,这是报告无效终止的宏定义,并声称如果包含它的文件包含在多个文件中,则每个 DEFINE_ENUM() 的 MembersOf() 都是多重定义的。