gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 15:28:06 24 4
gpt4 key购买 nike

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

例子:

typedef enum {
kVizsla = 0,
kTerrier = 3,
kYellowLab = 10
} DogType;

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

最佳答案

非常适合 X() macros .这些类型的宏可以使用 C 预处理器从同一来源构造枚举和数组。您只需将新数据添加到包含 X() 宏的 #define。

你的例子可以这样写:

// All dog data goes in this list
#define XDOGTYPE \
X(kVizsla,0,"vizsla") \
X(kTerrier,3,"terrier") \
X(kYellowLab,10,"yellowlab")

// Dog info
typedef struct {
int val; // Defined value
char * desc; // Text description
} DogType;

// Build an array index using the Names
typedef enum {
#define X(Name,Val,Text) Name,
XDOGTYPE
#undef X
MAXDOGS
} DogIndex;

// Build a lookup table of values
DogType Dog[] = {
#define X(Name,Val,Text) {Val,Text},
XDOGTYPE
#undef X
};

// Access the values
for (i=0; i < MAXDOGS; i++)
printf("%d: %s\n",Dog[i].val,Dog[i].desc);

关于c - 在 C 中为 typedef 枚举添加预定义数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com