// // Created by dongl on 23-4-25. // #ifndef IM2_ENUMMAPPING_H #define IM2_ENUMMAPPING_H #include "proto/mp.mph.pb.h" // 定义一个宏来包含需要用到的枚举值 #define MY_ENUM_VALUES \ X(MP_REQUEST_LOGIN) \ X(MP_REQUEST_LOGOUT) \ X(MP_REQUEST_REGISTER) \ X(MP_REQUEST_CODE) \ X(MP_REQUEST_FRIENDS) \ X(MP_REQUEST_GROUPS) #if 0 // method 1 // 直接定义枚举值 enum { SUMMER, AUTUMN, WINTER, }; #else // method 2 // 利用宏展开获取并定义枚举 #undef X #define X(x) x, enum { MY_ENUM_VALUES }; #endif // 重新定义宏函数并获取新的展开形式,以获取枚举值对应的字符串; const char *myenumToString(int n) { #undef X #define X(x) case (x): { return #x; } #define MAKE_ENUM_CASES \ MY_ENUM_VALUES \ default: { return "unknown enum string."; } switch (n) { MAKE_ENUM_CASES } } #endif //IM2_ENUMMAPPING_H