Какой условный препроцессор 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__нужно определиться.