62 lines
930 B
C
62 lines
930 B
C
//
|
|
// 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
|