【问题标题】:In Objective c how to define custom boolean type?在Objective c中如何定义自定义布尔类型?
【发布时间】:2013-09-07 18:46:45
【问题描述】:
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;

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

【问题讨论】:

    标签: objective-c c boolean


    【解决方案1】:

    保持简单?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 2015-12-31
      相关资源
      最近更新 更多