15

如何获得枚举计数

我有一个枚举

typedef enum{

DEL_TIME_VALUE    = -1,
DEL_TIMESEC_VALUE = 100,
DEL_TIMEMIN_VALUE = 200,
DEL_TIMEHOUR_VALUE = 300,
DEL_DAY_VALUE      = 1000,
DEL_COUNT_VALUE    = 1000,
....
.....
.....
DEL_END             =90002
}WORKINGTIME;

我如何获得枚举计数。

我在下面尝试循环!

for(int i=DEL_TIME_VALUE; i<=DEL_END; i++) {

}

估计不是什么好东西!

谁能告诉我如何获得枚举计数!在枚举中声明。

提前致谢!

4

2 回答 2

39

你不能。

有一种技术可以让您获得枚举计数。看起来像

typedef enum {
    value_one,
    value_two,
    value_three,
    ...
    enum_count
} my_enum;

现在该值enum_count是枚举中值的计数。但是,此技术仅在枚举都带有其隐含值时才有效,其中value_oneis 0value_twois1等。因此,枚举中的最后一个值始终具有枚举值计数的值。在您的情况下,您的枚举常量具有非单调递增的显式值。无法从这种类型的枚举中获取计数。即使在理论上你可以得出一个计数,这也无济于事,因为你无法得出给定枚举常数的值。

于 2013-02-05T21:22:29.783 回答
2

an 的值enum是编译时常量,不可用于代码中的自省。

相反,您可以查看enum使用 Objective-C 实现自定义类(类似于 Java 类型安全枚举http://docs.oracle.com/javase/1.5.0/docs/guide/language/enums.html)。

于 2013-02-05T21:22:13.193 回答