#define COLOR_ENUM(X) \
X(RED) \
X(GREEN) \
X(BLUE)
2 DECLARE_ENUM宏用于生成枚举定义
#define DECLARE_ENUM(name) name,
3 定义枚举变量
enum Color { COLOR_ENUM(DECLARE_ENUM) };
当这个宏与COLOR_ENUM组合使用时:预处理器会展开为:
enum Color {
RED,
GREEN,
BLUE
};
4 定义ENUM_CASE宏;用于生成switch语句的case分支:
这里的#name是字符串化操作符,它会将宏参数转换为字符串字面量。
#define ENUM_CASE(name) case name: return #name;
5 xx_to_string 函数定义
const char *color_to_string(enum Color color) {
switch (color) {
COLOR_ENUM(ENUM_CASE)
default:
return "UNKNOWN";
}
}
预处理器会展开为
const char *color_to_string(enum Color color) {
switch (color) {
case RED: return "RED";
case GREEN: return "GREEN";
case BLUE: return "BLUE";
default:
return "UNKNOWN";
}
}
这种实现的优点是:
缺点是:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。