typedef和enum有什么区别

时间:2017-10-14 02:37:53

标签: c++ enums typedef

我正在尝试使用typedef和enum。我有两行。两行后面有什么区别吗?

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

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

1 个答案:

答案 0 :(得分:3)

  • 第一行定义了一个没有标记的enum,并为其命名为STYPE
  • 第二行定义名为enum的名为STYPE

不同之处在于第一个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 ++中也是允许的,但它与你的第二个声明没有区别。