我知道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 ++
答案 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,这无论如何都是我真正需要的。