有没有办法在运行时将枚举值映射到名称? (我正在与GCC建立。)
我知道GDB可以做到这一点,而且我愿意使用一些不可移植的东西,并使用调试数据。
编辑:我正在寻找一种解决方案,它不需要修改原始枚举声明,也不需要在映射函数中复制所有值。我已经知道如何做到这两点。
有效;我想要一个函数,它在格式化运行时枚举值时执行GDB所做的任何事情。
答案 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)
这可能对您有所帮助: