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

}

私はそれが良くないと思います!

列挙型のカウントを取得する方法を教えてください。enumで宣言されています。

前もって感謝します!

4

2 に答える 2

39

できません。

列挙型カウントを取得できる手法が 1 つあります。のように見えます

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 typesafe Enum http://docs.oracle.com/javase/1.5.0/docs/guide/language/enums.htmlに似たもの)を使用してカスタムクラスを実装することを検討できます。

于 2013-02-05T21:22:13.193 に答える