Какой условный препроцессор C следует использовать для конкретного кода OS X?


Какое условие препроцессора C следует использовать для конкретного кода OS X? Мне нужно включить определенную библиотеку, если я компилирую для OS X, или другой заголовок, если я компилирую для Linux.

Я знаю, что есть __APPLE__, но я не знаю, является ли это текущим условным для OS X 10.x.

6 22

6 ответов:

Этот список макросов операционной системы говорит о наличии обоих __APPLE__ и __MACH__ указывают OSX.

Также подтверждается в строке 18 части источник для fdisk.

__APPLE__ скажет вам, что вы компилируете на платформе Apple. Если вам не нужно поддерживать версии MacOS до OS X, этого должно быть достаточно. Кроме того, вы можете использовать __APPLE__ и __MACH__, чтобы убедиться, что вы компилируете на OS X.

Если я правильно помню, это __APPLE__ :)

Этот пример кода может помочь вам -

if defined(__APPLE__)
#include "TargetConditionals.h"
  if (!defined(TARGET_OS_IPHONE) && !defined(TARGET_IPHONE_SIMULATOR))
 {
   //write your OSX specific code here
 } 

Старый стиль raw:

#ifdef WIN32
// windows.
#elif __APPLE__
// osx and ios.
#endif

Эта страница содержит список всех предопределенных макросов ОС.

Для mac OSX оба __APPLE__ && __MACH__ нужно определиться.