我正在尝试使用typedef和enum。我有两行。两行后面有什么区别吗?
typedef enum {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE} STYPE
enum STYPE {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE}
答案 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 ++中也是允许的,但它与你的第二个声明没有区别。