我很惊讶地发现Xcode没有为以下代码发出错误,这在C中无效:
typedef enum : NSUInteger {
FLAG_A = 1,
FLAG_B = 2,
FLAG_C = 4
} MyFlags;
这似乎使NSUInteger
成为MyFlags
枚举的基础类型,非常类似于C#用于设置枚举的基础类型的语法。
这种语法是否按照它出现的方式执行,还是意味着什么呢?
答案 0 :(得分:4)
这是从C ++ 11借用的一个功能,用于确保枚举的特定大小。它允许在框架的公共API中使用枚举,而不必担心ABI最终会破坏。
Clang implements this feature并允许在Objective-C中将其用作语言扩展。
答案 1 :(得分:1)
这在目标c中可以正常工作。你可以在枚举中设置这些参数的任何值。