2009-04-27 101 views
0

第1部分2 C枚舉問題

在C中,在那裏宣佈這樣一個枚舉之間的任何差異:

typedef enum{VAL1, VAL2,} firstEnum; 

和這樣的:

enum secondEnum{Val1, Val2,}; 

除了事實上,使用secondEnum時,你必須寫:

enum secondEnum...; 

第2部分

而且,我是正確的思維,以下是等價的:

enum{Val1, Val2,} enum1; 

enum thirdEnum{Val1, Val2,} 
enum thirdEnum enum1; 

感謝

回答

2

在第一部分中,有顯然是一個區別 - 首先你聲明firstEnumtypedef爲(匿名)枚舉類型,而在第二secondEnum是枚舉類型代碼,並沒有涉及一個typedef。正如您所注意到的,第一個建議是爲了便於使用。

在第2部分中,兩個是不等價的 - 第一聲明一個匿名枚舉類型,並限定enum1是該類型的。第二個聲明瞭一個指定的枚舉類型,然後聲明enum1爲該類型。其意義在於,你可以在代碼的其他部分使用命名的類型,而在第一你不能使用任何其他地方,所以你可能要使用整型值作爲別名枚舉類型的值。

+0

好,問題(其上重新讀出的並不完全清楚)的意思是從功能的角度來看。即在第1部分中,如果我要創建一個類型爲「firstEnum」的枚舉類型和「secondEnum」類型的另一個枚舉類型,那麼它們是等價的(是)。 這同樣適用於第2部分,是enum1s在功能方面宣佈當量(又是) – Lehane 2009-04-27 09:27:40