Which macro to wrap Mac OS X specific code in C/C++ Which macro to wrap Mac OS X specific code in C/C++ c c

Which macro to wrap Mac OS X specific code in C/C++


It all depends.

Each macro specifies something different in meaning.
See: https://developer.apple.com/library/mac/documentation/Porting/Conceptual/PortingUnix/compiling/compiling.html#//apple_ref/doc/uid/TP40002850-SW13

__APPLE__

This macro is defined in any Apple computer.

__APPLE_CC__

This macro is set to an integer that represents the version number of the compiler. This lets you distinguish, for example, between compilers based on the same version of GCC, but with different bug fixes or features. Larger values denote later compilers.

__OSX__

Presumably the OS is a particular variant of OS X

So given the above definitions I would use __APPLE__ to distinguish apple specific code.


Here is a nice list of macros for operating systems.

There's little info on __OSX__ on the web. You'll be safe with __APPLE__.


I normally use __MACH__ for this. It's been defined since the earliest version of OS X (and even before, presumably).