如何获取枚举数

问题描述 投票:0回答:2

如何获取枚举数

我有一个枚举

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循环!

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

}

我觉得这不太好!

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

提前致谢!

c enums
2个回答
39
投票

你不能。

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

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

现在值

enum_count
是枚举中值的计数。但是,此技术仅在枚举都带有其 implicit 值时才有效,其中
value_one
0
value_two
1
,等等。因此,枚举中的最后一个值始终具有该值枚举值的计数。在您的情况下,您的枚举常量具有不单调递增的“显式”值。无法从这种类型的枚举中导出计数。即使在理论世界中您可以导出计数,这也对您没有帮助,因为您无法导出给定枚举常量的值。


2
投票
enum

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


相反,您可以考虑使用 Objective-C 实现自定义

enum

类(类似于 Java 类型安全枚举

http://docs.oracle.com/javase/1.5.0/docs/guide/language/enums .html
).

© www.soinside.com 2019 - 2024. All rights reserved.