我惊讶地发现 Xcode 没有为以下代码发出错误,这在 C 中是无效的:
typedef enum : NSUInteger {
FLAG_A = 1,
FLAG_B = 2,
FLAG_C = 4
} MyFlags;
这似乎使枚举NSUInteger
的基础类型MyFlags
与 C# 用于设置枚举的基础类型的语法非常相似。
这个语法是按照它出现的那样做,还是有别的意思?
我惊讶地发现 Xcode 没有为以下代码发出错误,这在 C 中是无效的:
typedef enum : NSUInteger {
FLAG_A = 1,
FLAG_B = 2,
FLAG_C = 4
} MyFlags;
这似乎使枚举NSUInteger
的基础类型MyFlags
与 C# 用于设置枚举的基础类型的语法非常相似。
这个语法是按照它出现的那样做,还是有别的意思?
它是从 C++11 借用的一个特性,用于确保枚举的特定大小。它允许在框架的公共 API 中使用枚举,而不必担心 ABI 最终会崩溃。
Clang 实现了这个特性,并允许它在 Objective-C 中作为语言扩展使用。
这将在目标 c 中正常工作。您可以在枚举中为这些参数设置任何值。