yohhoyの日記

技術的メモをしていきたい日記

OBJC_BOOL_IS_BOOLマクロ

Objective-Cランタイムで定義される風変わりな名前のマクロ。

Macro
OBJC_BOOL_IS_BOOL
iOS | iPadOS | Mac Catalyst | macOS | tvOS | visionOS | watchOS

#define OBJC_BOOL_IS_BOOL
OBJC_BOOL_IS_BOOL | Apple Developer Documentation

Objective-C BOOL型==C言語 bool型となる環境において定義される。BOOL==signed char型となる環境では、別マクロOBJC_BOOL_IS_CHARが定義される。
https://github.com/opensource-apple/objc4/blob/master/runtime/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

関連URL