typedef signed char BOOL;
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C"
// even if -funsigned-char is used.
#if __has_feature(objc_bool)
#define YES __objc_yes
#define NO __objc_no
#else
#define YES ((BOOL)1)
#define NO ((BOOL)0)
#endif
以上是 BOOL 在 iOS 中的定义。按照相同的方式,我试图定义另一个值为 ON OFF 的布尔值,并如下所示。
typedef signed char ONOFF;
#if __has_feature(objc_bool)
#define ON __objc_yes
#define OFF __objc_no
#else
#define ON ((ONOFF)1)
#define OFF ((ONOFF)0)
#endif
当此类型定义为参数自动完成时,将其写为“int”而不是“ONOFF”。但是对于 BOOL 类型,它正确地写为 'BOOL'。
是否可以创建在所有方面都与 BOOL 类似的自定义布尔类型?
对于某些属性,ON/OFF 的可读性会更好,因此请尝试上述方法。
有什么建议么?
编辑
使用 ON/OFF 代替 YES/NO 的一种快速解决方法是
typedef YES ON;
typedef NO OFF;
但仍然想知道为什么我不能创建自己的布尔类型。