在 C 中为 typedef 枚举定义附加数据的最佳方法是什么?
例子:
typedef enum {
kVizsla = 0,
kTerrier = 3,
kYellowLab = 10
} DogType;
Run Code Online (Sandbox Code Playgroud)
现在我想为每个定义名称,例如kVizsla应该是“vizsla”。我目前使用一个使用大开关块返回字符串的函数。
@dmckee:我认为建议的解决方案很好,但对于简单的数据(例如,如果只需要名称),可以使用自动生成的代码进行增强。虽然自动生成代码的方法有很多,但对于像这样简单的事情,我相信您可以编写一个简单的 XSLT,它接受枚举的 XML 表示形式并输出代码文件。
XML 的形式如下:
<EnumsDefinition>
<Enum name="DogType">
<Value name="Vizsla" value="0" />
<Value name="Terrier" value="3" />
<Value name="YellowLab" value="10" />
</Enum>
</EnumsDefinition>
Run Code Online (Sandbox Code Playgroud)
生成的代码将类似于 dmckee 在他的解决方案中建议的内容。
有关如何编写此类 XSLT 的信息,请尝试此处或在 google 中搜索并找到合适的教程。在我看来,编写 XSLT 并不是很有趣,但也没有那么糟糕,至少对于像这样的相对简单的任务来说是这样。