为什么在下面的代码中需要 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
};
最佳答案
如果您没有 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 枚举)。
关于objective-c - 为什么 typedef 与枚举类型一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716538/