typedef anonymus enum声明之后

时间:2012-05-10 10:21:19

标签: objective-c enums typedef

我正在查看cocoa框架中的枚举,我看到了这个:

enum {  
    NSNetServiceNoAutoRename = 1UL << 0  
}; 

typedef NSUInteger NSNetServiceOptions;

我的问题是这怎么可能?

NSNetServiceOptions如何与enum绑定?

是否只能在目标c或c?

中实现

2 个答案:

答案 0 :(得分:1)

C中的枚举(以及因此Obj-C和C ++)是弱类型的,这意味着您可以隐式地在枚举和整数之间进行转换,但是你喜欢它们只是int s。

例如,这完全有效:

enum {A = 1};
enum {B = A+1};

const int C = A | B;

枚举使用typedef而不是shortform typedef enum {...} Name;的原因是因为枚举默认为类型int。通过使用typedef,您可以将枚举定义为无符号整数。

答案 1 :(得分:1)

NSNetServiceOptions enum enum 将保留整数值的上下文中绑定。在上面的示例中,您将为 enum 创建一个变量as,

NSNetServiceOptions _netServiceOptions;

您甚至可以忽略 typedef 并直接使用

NSUIInteger _netServiceOptions;