如何将枚举值转换为对应的枚举名称?

2026-05-23 00:390阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计624个文字,预计阅读时间需要3分钟。

实现了一个宏定义,用于将颜色枚举转换为字符串。支持颜色枚举为`Red`、`Blue`等,并提供了大小写转换功能。示例:将`Red`转换为`Red`或`RED`。

效果

ENUM_DEFINE ( Color, Red, Blue, ) EnumHelper(Color::Red) -> "Red" EnumHelper(Color::Red, std::toupper) -> "RED" 关键技术

  1. __VA_ARGS__

    __VA_ARGS__ 实现了可变参数的宏。

    #define XXX(type, ...) enum class type { __VA_ARGS__ };

    XXX(Color, Red, Blue) 等价于:

    enum class Color { Red, Blue };

  2. #__VA_ARGS__

    #__VA_ARGS__ 可将宏的可变参数转为字符串。

    #define XXX(type, ...) #__VA_ARGS__

    XXX(Color, Red, Blue) 等价于:"Red, Blue"

  3. 在函数外执行代码的能力

    在函数体外,可以通过定义全局变量来执行一个函数。需要注意的是,头文件中正常是不能进行变量初始化的,除非加上 static 或者 const

阅读全文

本文共计624个文字,预计阅读时间需要3分钟。

实现了一个宏定义,用于将颜色枚举转换为字符串。支持颜色枚举为`Red`、`Blue`等,并提供了大小写转换功能。示例:将`Red`转换为`Red`或`RED`。

效果

ENUM_DEFINE ( Color, Red, Blue, ) EnumHelper(Color::Red) -> "Red" EnumHelper(Color::Red, std::toupper) -> "RED" 关键技术

  1. __VA_ARGS__

    __VA_ARGS__ 实现了可变参数的宏。

    #define XXX(type, ...) enum class type { __VA_ARGS__ };

    XXX(Color, Red, Blue) 等价于:

    enum class Color { Red, Blue };

  2. #__VA_ARGS__

    #__VA_ARGS__ 可将宏的可变参数转为字符串。

    #define XXX(type, ...) #__VA_ARGS__

    XXX(Color, Red, Blue) 等价于:"Red, Blue"

  3. 在函数外执行代码的能力

    在函数体外,可以通过定义全局变量来执行一个函数。需要注意的是,头文件中正常是不能进行变量初始化的,除非加上 static 或者 const

阅读全文