xcode:如何在编译时检测sdk

时间:2017-01-05 19:53:15

标签: xcode

我知道Availability.h中的宏用于sdk检测。但它们导致 _attribute _ 类型声明,我不知道如何使用它。

我希望能够使用这样的常规定义:

 #include "Availability.h"

 #if IS_USING_SDK(__MAC_10_10)
 do some declarations here
 #endif

 #if CURRENT_SDK < __MAC_10_12
 do some declarations here
 #endif

对此有何帮助?

编辑:我正在使用C ++

2 个答案:

答案 0 :(得分:1)

您可以使用这样的预处理程序指令:

#include <AvailabilityMacros.h>
#if defined(MAC_OS_X_VERSION_10_12) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_12
// code that requires the 10.12 or later SDK
#endif

或其相反的:

#if !defined(MAC_OS_X_VERSION_10_12) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12
// code for SDKs 10.11 and earlier
#endif

有一个较新的可用性宏标头,Availability.h,它定义了不同名称的宏:

#include <Availability.h>
#if defined(__MAC_10_12) && __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_12
// code that requires the 10.12 or later SDK
#endif

#if !defined(__MAC_10_12) || __MAC_OS_X_VERSION_MAX_ALLOWED < __MAC_10_12
// code for SDKs 10.11 and earlier
#endif

答案 1 :(得分:0)

一种方法是查看是否定义了__MAC_10_12。这将表明sdk至少为10.12,这无论如何都是我真正需要的。