将枚举值映射到C ++中的字符串

时间:2009-12-10 21:38:31

标签: c++ debugging enums

有没有办法在运行时将枚举值映射到名称? (我正在与GCC建立。)

我知道GDB可以做到这一点,而且我愿意使用一些不可移植的东西,并使用调试数据。


编辑:我正在寻找一种解决方案,它不需要修改原始枚举声明,也不需要在映射函数中复制所有值。我已经知道如何做到这两点。

有效;我想要一个函数,它在格式化运行时枚举值时执行GDB所做的任何事情。

3 个答案:

答案 0 :(得分:3)

如果你有韧性,你可以创建一个工具来解析枚举的源文件,生成翻译函数并将它们添加到源代码中。通过更多精力,您可以为Eclipse和Emacs等编辑器编写插件,以便为您执行此操作。

也许可以在Perl脚本中完成?

答案 1 :(得分:1)

如果您不想花时间使用GCC符号信息,gcc-xml以可重复使用的XML格式(包括枚举名称)为您提供有关C ++源的信息。

简化示例......此来源:

enum E {
  e1 = 1,
  e2 = 42
};

变为:

<GCC_XML>
  <!-- ... -->
  <Enumeration name="E">
    <EnumValue name="e1" init="1"/>
    <EnumValue name="e2" init="42"/>
  </Enumeration>
  <!-- ... -->
</GCC_XML>

答案 2 :(得分:0)

这可能对您有所帮助:

The "stabs" debug format