我正在尝试使用typedef和enum。我有两行代码,请问以下两行代码有什么区别?
typedef enum {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE} STYPE
enum STYPE {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE}
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++中也允许这种声明,但与您的第二个声明没有区别。