为什么typedef与enum类型一起使用?

时间:2011-01-17 18:32:44

标签: objective-c c enums typedef

为什么下面的代码需要typedef?

typedef enum _Coordinate {
    CoordinateX = 0,    ///< X axis
    CoordinateY = 1,    ///< Y axis
    CPCoordinateZ = 2   ///< Z axis
} Coordinate;

为什么不直接使用下面的代码并删除typedef?

enum Coordinate {
    CoordinateX = 0,    ///< X axis
    CoordinateY = 1,    ///< Y axis
    CPCoordinateZ = 2   ///< Z axis
};

1 个答案:

答案 0 :(得分:11)

如果您没有typedef枚举,则在其他代码中,您必须将其称为enum Coordinate,而不仅仅是Coordinate,即使您知道 Coordinate是一个枚举。我想这只是为了消除enum关键字的冗余,我猜。

为了更清楚,如果你typedef将它与宣告它分开,那么这就是它的样子:

enum _Coordinate {
    CoordinateX = 0,
    CoordinateY = 1,
    CPCoordinateZ = 2
};

// You map the enum type "enum _Coordinate" to a user-defined type "Coordinate"
typedef enum _Coordinate Coordinate;

这也适用于C结构和枚举(无论如何,Obj-C枚举只是C枚举。)