2 C enum问题

时间:2009-04-27 09:03:24

标签: c enums typedef

第1部分

在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;

由于

1 个答案:

答案 0 :(得分:2)

在第1部分中,显然存在差异 - 首先,您将({1}}声明为({1}}作为(匿名)枚举类型,而在第二部firstEnum中是{枚举类型,并没有涉及typedef。第一个是建议的,因为你已经注意到易用性。

在第2部分中,两者不相等 - 第一部分声明了一个匿名枚举类型,并将typedef定义为该类型。第二个声明了一个命名的枚举类型,然后将secondEnum声明为该类型。重要的是你可以在代码的其他部分使用命名类型,而在第一个你不能在其他地方使用它,所以你可能不得不使用整数值作为枚举类型的值的别名。