OS X版本(Lion或不是)检测的C宏?

时间:2011-11-06 03:02:54

标签: c macos gcc

是否有用于检测OS X版本的预定义C宏?我知道__APPLE____MACH__存在,但那些是二进制的。 __APPLE_CC__是否有特定值表示狮子?

特别是,Lion在Lion中添加了getline()<stdio.h>的定义,能够检测代码是否在Lion上进行编译以及是否可以解决编译错误会很好。

具体来说,我指的是在Bash中构建Unix C代码(在XCode之外)。

2 个答案:

答案 0 :(得分:7)

Availability.h宏允许您检查编译和运行时版本依赖性。请参阅讨论here

答案 1 :(得分:4)

签入/usr/include/AvailabilityMacros.h - 它包含宏,例如:

#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
    #define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER    DEPRECATED_ATTRIBUTE
#else
    #define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER
#endif

我遇到过这个问题,因为'openssl / sha1.h'已经被Lion的'deprecated'属性搞砸了,所以编译git会得到很多警告。