给定枚举定义为:
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()都会被多次定义。