typedef和enum有什么区别?

3

我正在尝试使用typedef和enum。我有两行代码,请问以下两行代码有什么区别?

typedef enum {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE} STYPE

enum STYPE {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE}
1个回答

5
  • 第一行定义了一个没有标签的enum,并给它命名为STYPE
  • 第二行定义了一个名为STYPE的命名enum

区别在于第一个enum没有枚举标签,而第二个有。换句话说,对于enum STYPE,下面两行都可以编译:

STYPE s1;
enum STYPE s2;

只有第一行将编译为 typedef enum ... STYPE

注意:在C++中,使用typedef并不常见,因为enum会自动定义类型名称。这种结构在C语言中更为常见,其中enum没有typedef必须仅用作标签,即使用enum关键字。最后,这种结构也被用于C语言中:

typedef enum STYPE {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE} STYPE;

它定义了一个带标记的枚举(enum),并为其定义了一个类型名称。在C++中也允许这种声明,但与您的第二个声明没有区别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接