Mike
Mike

Reputation: 964

C macro for OS X version (Lion or not) detection?

Is there a predefined C macro for detecting the version of OS X? I know __APPLE__ and __MACH__ exist, but those are binary. Is there a specific value for __APPLE_CC__ that indicates Lion?

In particular, Lion added a definition of getline() to <stdio.h> in Lion and it would be nice to be able to detect whether or not code was compiling on Lion or not to work around compilation errors.

Specifically, I'm referring to building Unix C code in Bash (outside of XCode).

Upvotes: 7

Views: 5798

Answers (2)

Jonathan Leffler
Jonathan Leffler

Reputation: 754520

Check in /usr/include/AvailabilityMacros.h - it contains macros such as:

#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

I came across this stuff because 'openssl/sha1.h' has been slathered with 'deprecated' attributes for Lion, so compiling git gets warnings galore.

Upvotes: 4

Ned Deily
Ned Deily

Reputation: 85095

The Availability.h macros allow you to check for compile- and run-time version dependencies. See the discussion here.

Upvotes: 9

Related Questions