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