Проблема с C-препроцессором заключается в том, что он может сравнивать только цифры. И ios
, и macos
являются литералами, которые на самом деле нельзя сравнивать. Сначала вы должны определить их, например,
#define ios 1
#define macos 2
Однако, если вы это сделаете, используйте более подходящие имена, которые не будут конфликтовать с вашим кодом.
Если вы хотите узнать, как Apple это делает, посмотрите файл «Availability.h», который доступен для iOS и Mac OS, и, вероятно, это то, что вам следует использовать, например:
#ifdef __MAC_OS_X_VERSION_MAX_ALLOWED
#import <AppKit/AppKit.h>
#else
#import <UIKit/UIKit.h>
#endif