繁体   English   中英

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

[英]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>

这可能对您有所帮助:

“stabs”调试格式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM