如何将枚举值转换为对应的枚举名称?
- 内容介绍
- 文章标签
- 相关推荐
本文共计624个文字,预计阅读时间需要3分钟。
实现了一个宏定义,用于将颜色枚举转换为字符串。支持颜色枚举为`Red`、`Blue`等,并提供了大小写转换功能。示例:将`Red`转换为`Red`或`RED`。
效果ENUM_DEFINE ( Color,
Red,
Blue,
)
EnumHelper(Color::Red) -> "Red"
EnumHelper(Color::Red, std::toupper) -> "RED"
关键技术
-
__VA_ARGS____VA_ARGS__实现了可变参数的宏。#define XXX(type, ...) enum class type { __VA_ARGS__ };XXX(Color, Red, Blue)等价于:enum class Color { Red, Blue }; -
#__VA_ARGS__#__VA_ARGS__可将宏的可变参数转为字符串。#define XXX(type, ...) #__VA_ARGS__XXX(Color, Red, Blue)等价于:"Red, Blue" -
在函数外执行代码的能力
在函数体外,可以通过定义全局变量来执行一个函数。需要注意的是,头文件中正常是不能进行变量初始化的,除非加上
static或者const。
本文共计624个文字,预计阅读时间需要3分钟。
实现了一个宏定义,用于将颜色枚举转换为字符串。支持颜色枚举为`Red`、`Blue`等,并提供了大小写转换功能。示例:将`Red`转换为`Red`或`RED`。
效果ENUM_DEFINE ( Color,
Red,
Blue,
)
EnumHelper(Color::Red) -> "Red"
EnumHelper(Color::Red, std::toupper) -> "RED"
关键技术
-
__VA_ARGS____VA_ARGS__实现了可变参数的宏。#define XXX(type, ...) enum class type { __VA_ARGS__ };XXX(Color, Red, Blue)等价于:enum class Color { Red, Blue }; -
#__VA_ARGS__#__VA_ARGS__可将宏的可变参数转为字符串。#define XXX(type, ...) #__VA_ARGS__XXX(Color, Red, Blue)等价于:"Red, Blue" -
在函数外执行代码的能力
在函数体外,可以通过定义全局变量来执行一个函数。需要注意的是,头文件中正常是不能进行变量初始化的,除非加上
static或者const。

