typedef和enum有什么区别
问题描述:
我想用typedef和enum。我有两条线,下面两条线是否有区别?typedef和enum有什么区别
typedef enum {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE} STYPE
enum STYPE {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE}
答
- 第一行定义了一个没有标签的
enum
,并给它一个名字STYPE
- 第二行定义了一个名为
enum
称为STYPE
不同的是,第一enum
不有一个枚举标签,而第二个呢。换句话说,下面两线将编译enum STYPE
STYPE s1;
enum STYPE s2;
而只有第一线将编译为typedef enum ... STYPE
。
注:使用typedef
不是在C++中常见的,因为enum
自动定义类型名称。该结构在C中更常见,其中enum
而不是typedef
必须仅用作标签,即与enum
关键字一起使用。最后,该构建体也用于C:
typedef enum STYPE {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE} STYPE;
它定义了一个标记enum
,并且限定类型名称为它。这个声明在C++中也是允许的,但它与你的第二个声明没有区别。