如何获得枚举数

时间:2013-02-05 21:18:14

标签: iphone ipad

如何获得枚举计数

我有一个Enum

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++) {

}

我猜它不好!

任何人都可以告诉我如何获得枚举数!在枚举中声明。

提前致谢!

2 个答案:

答案 0 :(得分:34)

你不能。

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

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

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

答案 1 :(得分:2)

enum的值是编译时常量,不能用于代码中的内省。

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