为什么下面的代码需要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
};
答案 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枚举。)