2013-02-05 109 views
12

如何獲得枚舉數如何獲得枚舉數

我有一個枚舉

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

} 

我猜它不好!

任何人都可以告訴我如何獲得枚舉數!這是在枚舉中聲明的。

在此先感謝!

+1

可能重複的[(如何)我可以計算枚舉中的項?](http://stackoverflow.com/questions/2102582/how-can-i-count-the-items-in-an-enum ) – Luke

回答

32

你不能。

有一種技術可以讓你得到枚舉數。它看起來像

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

現在價值enum_count是在枚舉值的計數。但是,這種技術只適用於枚舉值都爲,其值爲,其中value_one0,value_two1等。因此,枚舉中的最後一個值總是具有枚舉值的計數值。在你的情況下,你的枚舉常量有明確的值不是單調遞增。沒有辦法從這種類型的枚舉中獲得計數。即使在理論世界中,你可以派生出一個計數,但這對你並沒有什麼幫助,因爲你無法推導出給定枚舉常量的值。

+0

謝謝凱文!您的信息對我有用! – kiran

+0

不錯的訣竅!我會用這個! –

+1

這是一個很棒的技術,我之前也用過很多,只是認爲值得補充一點,我有時用它來擴展一個枚舉到第二個枚舉中,例如在一個子類中,並且仍然保證這樣的唯一值。 typedef enumTwo {secondTypeOfValueOne = enum_count + 1,secondTypeOfValueTwo等,secondTypeOfValueCount} – Jef