Подтвердить что ты не робот

Как получить счет перечисления

Как получить число перечислений

У меня есть 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++) {

}

Я думаю, что это нехорошо!

может кто-нибудь сказать мне, как получить перечисление? которые объявлены в перечислении.

Спасибо заранее!

4b9b3361

Ответ 1

Вы не можете.

Существует один метод, который позволяет вам подсчитать количество перечислимых чисел. Он выглядит как

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

Теперь значение enum_count - это количество значений в перечислении. Однако этот метод работает только в том случае, если все перечисления имеют неявное значение, где value_one - 0, value_two - 1 и т.д. Из-за этого последнее значение в перечислении всегда имеет значение количество значений перечисления. В вашем случае константы перечисления имеют явные значения, которые не монотонно увеличиваются. Невозможно получить счет из этого типа перечисления. И даже в теоретическом мире, где вы могли бы получить счет, это не помогло бы вам, потому что вы не могли получить значение данной константы enum.

Ответ 2

Значения enum являются константами времени компиляции и недоступны для интроспекции в вашем коде.

Вместо этого вы можете взглянуть на реализацию пользовательского класса enum с Objective-C (что-то похожее на Java typesafe Enum http://docs.oracle.com/javase/1.5.0/docs/guide/language/enums.html).