Hi all,

We noticed today that the BOOL type is defined [1] like this in libobjc2:

> #     ifdef STRICT_APPLE_COMPATIBILITY
> typedef signed char BOOL;
> #     else
> #             if defined(__vxworks) || defined(_WIN32)
> typedef  int BOOL;
> #             else
> typedef unsigned char BOOL;
> #             endif
> #     endif
> 


Can anyone explain the reasoning behind the different types for the different 
platforms, and why it’s not just using signed char like on Apple platforms? I’m 
especially wondering about why the int type is used on Windows, as it’s messing 
with some code of ours.

Is there any downside to defining STRICT_APPLE_COMPATIBILITY?

Thanks!
Frederik


[1] 
https://github.com/gnustep/libobjc2/blob/bdf03cb55da14943c8add1c45db7b5a93b656d59/objc/runtime.h#L122-L133

Reply via email to