在c/c++代码中使用什么宏来识别Mavericks OSX 10.9

What macro to use to identify Mavericks OSX 10.9 in c/c++ code?

本文关键字:识别 Mavericks OSX 什么 c++ 代码      更新时间:2023-10-16

按照哪个宏将Mac OS X特定代码封装在C/C++中。

在OSX 10.9上编译时,具体使用什么宏来识别。与其他版本的OSX(如10.8、Snow Lion、Lion、Leopard、Leotard、Puma)或Harrison Ford不同。

  • __APPLE__只给出一个布尔值,没有足够的信息
  • __APPLE_CC__给出了各种版本号,但这似乎是关于编译器的,而不是一般的操作系统
#如果MAC_OS_X_VERSION_MIN_REQUIRED>=MAC_OS_X_VERSION_10_9<在此处输入小牛队的特定代码>#其他<在此处输入所有其他代码>#endif

这也适用于其他版本。有关OSX版本的其他宏,请参阅可用性宏.h.

Mac OS X上的标题中充斥着宏,例如:

__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9, __IPHONE_NA, __IPHONE_NA);
__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5,__MAC_10_8,__IPHONE_2_0,__IPHONE_6_0)

您还可以找到以下定义:

/usr/include/AvailabilityMacros.h:
#define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9    DEPRECATED_ATTRIBUTE

你可以找到:

$ grep -A2 -n DEPREC /usr/include/Availability.h
[...]
--
153:    #define __OSX_AVAILABLE_BUT_DEPRECATED(_osxIntro, _osxDep, _iosIntro, _iosDep) 
154-                                __AVAILABILITY_INTERNAL##_iosIntro##_DEP##_iosDep
155:    #define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(_osxIntro, _osxDep, _iosIntro, _iosDep, _msg) 
156-                               __AVAILABILITY_INTERNAL##_iosIntro##_DEP##_iosDep##_MSG(_msg)
157-
--
160:    #define __OSX_AVAILABLE_BUT_DEPRECATED(_osxIntro, _osxDep, _iosIntro, _iosDep) 
161-                                __AVAILABILITY_INTERNAL##_osxIntro##_DEP##_osxDep
162:    #define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(_osxIntro, _osxDep, _iosIntro, _iosDep, _msg) 
163-                               __AVAILABILITY_INTERNAL##_osxIntro##_DEP##_osxDep##_MSG(_msg)
--
167:    #define __OSX_AVAILABLE_BUT_DEPRECATED(_osxIntro, _osxDep, _iosIntro, _iosDep)
168:    #define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(_osxIntro, _osxDep, _iosIntro, _iosDep, _msg)

你可以合理地希望__MAC_10_9意味着Mac OS X 10.9小牛队:

/usr/include/AvailabilityMacros.h:
#define MAC_OS_X_VERSION_10_0         1000
#define MAC_OS_X_VERSION_10_1         1010
#define MAC_OS_X_VERSION_10_2         1020
#define MAC_OS_X_VERSION_10_3         1030
#define MAC_OS_X_VERSION_10_4         1040
#define MAC_OS_X_VERSION_10_5         1050
#define MAC_OS_X_VERSION_10_6         1060
#define MAC_OS_X_VERSION_10_7         1070
#define MAC_OS_X_VERSION_10_8         1080
#define MAC_OS_X_VERSION_10_9         1090
/usr/include/Availability.h:
#define __MAC_10_0            1000
#define __MAC_10_1            1010
#define __MAC_10_2            1020
#define __MAC_10_3            1030
#define __MAC_10_4            1040
#define __MAC_10_5            1050
#define __MAC_10_6            1060
#define __MAC_10_7            1070
#define __MAC_10_8            1080
#define __MAC_10_9            1090

所有这些都没有直接为您提供当前版本的Mac OS X,但有一些宏是根据这些定义的。阅读标题中的注释以获取指导。