在 C 中为 typedef 枚举添加预定义数据

laj*_*jos 5 c enums typedef

在 C 中为 typedef 枚举定义附加数据的最佳方法是什么?

例子:

typedef enum {
  kVizsla = 0,
  kTerrier = 3,
  kYellowLab = 10
} DogType;
Run Code Online (Sandbox Code Playgroud)

现在我想为每个定义名称,例如kVizsla应该是“vizsla”。我目前使用一个使用大开关块返回字符串的函数。

Her*_*shi 2

@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 并不是很有趣,但也没有那么糟糕,至少对于像这样的相对简单的任务来说是这样。