objective-c - 在 Objective c 中如何定义自定义 boolean 类型?

标签 objective-c c boolean

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 的 boolean 值,并像下面那样。

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 类似的自定义 boolean 类型?

对于某些属性,使用 ON/OFF 可读性会更好,因此尝试上面的方法。

有什么建议吗?

编辑

使用 ON/OFF 代替 YES/NO 的快速解决方法是

typedef YES ON;
typedef NO OFF;

但仍然想知道为什么我不能创建自己的 boolean 类型。

最佳答案

保持简单?

typedef BOOL ONOFF;
#define ON YES
#define OFF NO

关于objective-c - 在 Objective c 中如何定义自定义 boolean 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18610823/

相关文章:

java - 尝试创建一个函数,该函数接受两个 long 值并当且仅当第一个值是第二个值的倍数时返回 true

c++ - cin 到 boolean vector

java - 如何使用方法(Java)返回的 boolean 值?

ios - 如何调整 UITableViewCell 的大小以适应其内容?

ios - 在覆盖 UIView 的右下角创建四分之一透明孔

ios - ShareKit ios 的链接器错误

c - LKM和procfs的解释

c - 让函数仅使用宏调用

c - '0[array]' 在 c 上工作正常

ios - 使用 Google Calendar API 加载库 - Obj C