我在 C 头文件中有一个值的枚举。我想定义一个额外的数组或一组值,其中每个值对应于一个枚举值。本质上,该数组将是一个查找表,用于查找与每个枚举值相关的一些信息。但是,我想在编译时在头文件中执行此操作。
什么是完成这个的好方法?
这是一个示例,说明如何使用两个单独的枚举或定义结构来完成它。有没有更优雅的方法来仅使用 op 枚举来完成此操作?
enum op {
op1,
op2,
op3
};
enum op_information {
op1_info = 0xff,
op2_info = 0xf3,
op3_info = 0xc1
}
更新:对我来说同样有值(value)的帮助是回答是否有任何方法可以使用引用静态定义数组。也就是说,而不是做:
ushort op_information = { 0xff, 0xf3, 0xc1 },
我们能做到吗
ushort op_information[3]
op_information[op.op1] = 0xff;
op_information[op.op2] = 0xf3;
op_information[op.op3] = 0xc1
在编译时?
最佳答案
使用 C99 指定的初始化程序:
ushort op_information[] = {
[op1] = 0xff,
[op2] = 0xf3,
[op3] = 0xc1,
};
关于c - 基于枚举的静态数组 : C header,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18644304/