Какой условный препроцессор C следует использовать для конкретного кода OS X?
Какое условие препроцессора C следует использовать для конкретного кода OS X? Мне нужно включить определенную библиотеку, если я компилирую для OS X, или другой заголовок, если я компилирую для Linux.
Я знаю, что есть __APPLE__
, но я не знаю, является ли это текущим условным для OS X 10.x.
6 ответов:
Этот список макросов операционной системы говорит о наличии обоих
__APPLE__
и__MACH__
указывают OSX.Также подтверждается в строке 18 части источник для
fdisk
.
__APPLE__
скажет вам, что вы компилируете на платформе Apple. Если вам не нужно поддерживать версии MacOS до OS X, этого должно быть достаточно. Кроме того, вы можете использовать__APPLE__
и__MACH__
, чтобы убедиться, что вы компилируете на OS X.
Этот пример кода может помочь вам -
if defined(__APPLE__) #include "TargetConditionals.h" if (!defined(TARGET_OS_IPHONE) && !defined(TARGET_IPHONE_SIMULATOR)) { //write your OSX specific code here }
Эта страница содержит список всех предопределенных макросов ОС.
Для mac OSX оба
__APPLE__
&&__MACH__
нужно определиться.