假设我们有一些命名的枚举:
enum MyEnum {
FOO,
BAR = 0x50
};
我搜索的是一个脚本(任何语言),它扫描我项目中的所有标题并生成一个标题,每个枚举都有一个函数。
char* enum_to_string(MyEnum t);
和这样的实现:
char* enum_to_string(MyEnum t){
switch(t){
case FOO:
return "FOO";
case BAR:
return "BAR";
default:
return "INVALID ENUM";
}
}
问题在于类型定义的枚举和未命名的 C 风格枚举。有人知道吗?
编辑:解决方案不应该修改我的源代码,除了生成的函数。枚举在 API 中,因此使用迄今为止提出的解决方案不是一种选择。
原文由 Edu Felipe 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可能想查看 GCCXML 。
在您的示例代码上运行 GCCXML 会产生:
您可以使用任何您喜欢的语言来提取 Enumeration 和 EnumValue 标签并生成您想要的代码。