BOOL with 64-bit on iOS

后端 未结 2 1021
星月不相逢
星月不相逢 2020-12-07 23:59

When I use BOOL for 32-bit, I get:

BOOL b1=8960; //b1 == NO

bool b2=8960; //b2 == true  

But for 64-bit, I get:



        
2条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-08 00:57

    For 32-bit BOOL is a signed char, whereas under 64-bit it is a bool.


    Definition of BOOL from objc.h:

    /// Type to represent a boolean value.
    #if (TARGET_OS_IPHONE && __LP64__)  ||  TARGET_OS_WATCH
    #define OBJC_BOOL_IS_BOOL 1
    typedef bool BOOL;
    #else
    #define OBJC_BOOL_IS_CHAR 1
    typedef signed char BOOL; 
    // BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" 
    // even if -funsigned-char is used.
    #endif
    

提交回复
热议问题