解决方法
不幸的是,@ Binyamin是正确的,你不能用枚举来做到这一点.出于这个原因,我通常在我的项目中执行以下操作:
// in .h typedef int MyEnum; struct { MyEnum value1; MyEnum value2; MyEnum value3; } MyEnumValues; // in .m __attribute__((constructor)) static void initMyEnum() { MyEnumValues.value1 = 10; MyEnumValues.value2 = 75; MyEnumValues.value3 = 46; }
这也具有能够遍历值的优点,这是普通枚举无法实现的:
int count = sizeof(MyEnumValues) / sizeof(MyEnum); MyEnum *values = (MyEnum *) &MyEnumValues; for (int i = 0; i < count; i++) { printf("Value %i is: %i\n",i,values[i]); }
总而言之,这是我在C中进行枚举的首选方式.