我一直在寻找在Cocoa框架枚举和我看到这一点:的typedef anonymus枚举声明后
enum {
NSNetServiceNoAutoRename = 1UL << 0
};
typedef NSUInteger NSNetServiceOptions;
,我的问题是,这怎么可能?
NSNetServiceOptions
如何与enum
绑定?
而且它是唯一可能的目标c或也c?
我一直在寻找在Cocoa框架枚举和我看到这一点:的typedef anonymus枚举声明后
enum {
NSNetServiceNoAutoRename = 1UL << 0
};
typedef NSUInteger NSNetServiceOptions;
,我的问题是,这怎么可能?
NSNetServiceOptions
如何与enum
绑定?
而且它是唯一可能的目标c或也c?
NSNetServiceOptions绑到枚举,该枚举打算反正持有一个整数值的上下文。在上面的例子中,你将创建一个变量为枚举如,
NSNetServiceOptions _netServiceOptions;
你甚至可以忽略的typedef并直接使用,
NSUIInteger _netServiceOptions;
C中的枚举(因此Obj-C和C++)是弱类型的,这意味着您可以隐式地在枚举和整数之间进行转换,不过您只需要int
s。
例如,这是完全有效的:
enum {A = 1};
enum {B = A+1};
const int C = A | B;
原因的枚举使用简短typedef enum {...} Name;
的一个typedef代替是因为枚举默认为是int
类型。通过使用typedef,您可以将枚举定义为无符号整数。
我现在明白了。谢谢。 'enum'和'typedef'是完全分开的。 另外我认为,枚举并不总是'int',但取决于分配的值。就像在我的例子中使用'long'数字时一样,枚举将会很长。 – Aleksa