[英]Mapping enum values to strings in C++
有没有办法在运行时将枚举的值映射到名称? (我正在和海湾合作委员会一起建设。)
我知道GDB可以做到这一点而且我愿意使用一些不可移植的东西和调试数据。
编辑:我正在寻找一个解决方案,不需要修改原始枚举声明,也不需要在映射函数中复制所有值。 我已经知道如何做到这两点。
有效; 我想要一个函数,它在格式化运行时枚举值时执行GDB所做的任何事情。
如果你有韧性,你可以创建一个工具来解析枚举的源文件,生成翻译函数并将它们添加到源代码中。 通过更多精力,您可以为Eclipse和Emacs等编辑器编写插件,以便为您执行此操作。
也许它可以在Perl脚本中完成?
如果您不想花时间使用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>
这可能对您有所帮助:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.