是新來的Objetive-C來定義,今天我遇到NS_ENUM馬可像使用:爲什麼NS_ENUM以這種方式
typedef NS_ENUM(Type, MyType) {
Foo,
Bar
};
的使用是有點怪異什麼,爲什麼typedof
必須用在這裏,所以我檢查NS_ENUM的源代碼:
#if (__cplusplus && __cplusplus >= 201103L &&
(__has_extension(cxx_strong_enums) ||
__has_feature(objc_fixed_enum))
) ||
(!__cplusplus && __has_feature(objc_fixed_enum))
#define NS_ENUM(_type, _name)
enum _name : _type _name; enum _name : _type
#if (__cplusplus)
#define NS_OPTIONS(_type, _name)
_type _name; enum : _type
#else
#define NS_OPTIONS(_type, _name)
enum _name : _type _name; enum _name : _type
#endif
#else
#define NS_ENUM(_type, _name) _type _name; enum
#define NS_OPTIONS(_type, _name) _type _name; enum
#endif
被定義NS_ENUM的方式讓我更糊塗了,因爲我不明白這裏的語法,任何人都可以從細節語法的角度來看解釋的定義?謝謝。
HT tp://en.wikipedia.org/wiki/C_preprocessor – Merlevede
http://clang.llvm.org/docs/LanguageExtensions.html#enumerations-with-a-fixed-underlying-type –
http://www.apeth。 com/iOSBook/ch01.html#SBnewenum – matt