Как подсчитать перечисление
Как подсчитать перечисление
У меня есть 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++) {
}
Я думаю, это не очень хорошо!
Может ли кто-нибудь сказать мне, как получить количество перечислений! которые объявлены в enum.
Заранее спасибо!
2 ответа
Ты не можешь
Есть одна техника, которая позволяет вам получить количество перечислений. Это выглядит как
typedef enum {
value_one,
value_two,
value_three,
...
enum_count
} my_enum;
Теперь значение enum_count
это количество значений в перечислении. Однако этот метод работает только в том случае, если все перечисления несут свою неявную ценность, где value_one
является 0
, value_two
является 1
и т. д. Из-за этого последнее значение в перечислении всегда имеет значение счетчика значений перечисления. В вашем случае ваши константы перечисления имеют явные значения, которые не монотонно увеличиваются. Нет никакого способа получить счет из этого типа перечисления. И даже в теоретическом мире, где вы могли бы получить счет, это не помогло бы вам, потому что вы не могли получить значение заданной константы перечисления.
Значения enum
являются константами времени компиляции и недоступны для самоанализа в вашем коде.
Вместо этого вы можете посмотреть на реализацию пользовательских enum
класс с Objective-C (что-то похожее на типизированный Java Enum http://docs.oracle.com/javase/1.5.0/docs/guide/language/enums.html).