从C中的typedef enum获取索引处的数组值

时间:2012-07-04 23:16:37

标签: c arrays enums typedef

如果有这样的枚举:

typedef enum {
    ValueOne = /* some arbitrary number, NOT necessarily 0 */,
    ValueTwo = /* another number, NOT necessarily consecutive */
} MyEnumeration;

我想知道是否有任何方法可以从中获取数组并在不执行此操作的情况下访问特定索引处的值:

int array[2] = {ValueOne, ValueTwo};
MyEnumeration value = array[provided_index];

我的问题是,在我的项目中,枚举有10-15个值,而我宁愿不从每个值中创建一个数组。

[编辑]:由于typedefenum根本没有捆绑在一起,我可以看到这将的可能性如何,但我认为它不会如果我遗失了什么,我会受伤。

2 个答案:

答案 0 :(得分:5)

没有

您必须为枚举和数组编写代码,或使用某种技术自动生成代码以减轻维护负担。

您可能会对本文感兴趣:The New C: X Macros

答案 1 :(得分:-2)

我会彻底废除枚举。如果你必须将它存储在数组和枚举中,那么它根本就没有意义。枚举是宏,它们并不真正存储任何信息,它们只是为数字创建名称,我相信在编译时会替换它们。你可能最好只记住你头脑中的某些名字或使用#define。