我正在尝试使用 typedef 和 enum。我有两条线。以下两条线有什么区别吗?
typedef enum {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE} STYPE
enum STYPE {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE}
Run Code Online (Sandbox Code Playgroud)
enum没有标签的对象,并给它一个名称STYPEenum名为STYPE区别在于第一个enum没有枚举标签,而第二个有。换句话说,下面的两行都将编译为enum STYPE
STYPE s1;
enum STYPE s2;
Run Code Online (Sandbox Code Playgroud)
而只有第一行会编译为typedef enum ... STYPE.
注意: Usingtypedef在 C++ 中并不常见,因为enum会自动定义类型名称。该结构在 C 中更常见,其中enumwithouttypedef必须仅用作标记,即 withenum关键字。最后,这个结构也用在 C 中:
typedef enum STYPE {UNDEFINED, POINT2D, POINT3D, CIRCLE, SQUARE, RECTANGLE, SPHERE} STYPE;
Run Code Online (Sandbox Code Playgroud)
它定义了一个 tagged enum,并为其定义了一个类型名称。此声明在 C++ 中也是允许的,但它与第二个声明没有什么不同。
| 归档时间: |
|
| 查看次数: |
4323 次 |
| 最近记录: |