xcode:如何在编译时检测sdk

Chu*_*son 2 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
Run Code Online (Sandbox Code Playgroud)

对此有什么帮助吗?

编辑:我正在使用 C++

Ken*_*ses 5

您可以像这样使用预处理器指令:

#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
Run Code Online (Sandbox Code Playgroud)

或其相反:

#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
Run Code Online (Sandbox Code Playgroud)

有一个较新的可用性宏标头 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
Run Code Online (Sandbox Code Playgroud)