我有一个针对最低平台10.5的应用程序,它可以通过SDK 10.6或10.7进行编译.
但是,当使用旧版本的xcode和10.5 SDK进行编译时,编译失败并需要一些额外的#import(为什么我不确定,但确实如此).当我导入OpenGL标头时,我收到一些关于某些类型未解决的错误.添加#import <CarbonCore/Endian.h>修复问题(缺少的符号所在的位置).
除非绝对必要,否则我不想执行#import,特别是在使用10.6或10.7编译时不执行此操作.
我知道如何检查我是否使用优于给定版本的SDK,如下所示:
#if MAC_OS_X_VERSION_10_5 > MACS_VERSION_MIN_REQUIRED
// Mac > 10.5 code here
#endif
Run Code Online (Sandbox Code Playgroud)
问题是测试反向条件已被证明是非平凡的,因为SDK的所有后续版本都具有早期版本中的所有定义.
我想找到相当于:
#if COMPILING_WITH_10_5_OR_EARLIER
blah
#endif
Run Code Online (Sandbox Code Playgroud)
当然,必须有一个我忽略的简单方法
#if __MAC_OS_X_VERSION_MAX_ALLOWED > 1050 // note use of 1050 instead of __MAC_10_5
# include <security/pam_appl.h>
#else
# include <pam/pam_appl.h>
#endif
Run Code Online (Sandbox Code Playgroud)