2009-04-27 99 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