我一直在尋找在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