Какой условный препроцессор C следует использовать для кода, специфичного для OS X? - PullRequest
22 голосов
/ 07 октября 2009

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

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

Ответы [ 6 ]

40 голосов
/ 07 октября 2009

В этом списке макросов операционной системы указано, что и __APPLE__, и __MACH__ указывают на OSX.

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

7 голосов
/ 07 октября 2009

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

2 голосов
/ 07 октября 2009

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

0 голосов
/ 09 декабря 2015

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

Для Mac OSX необходимо указать оба значения __APPLE__ && __MACH__.

0 голосов
/ 06 июня 2015

старый стиль сырья:

#ifdef WIN32
// windows.
#elif __APPLE__
// osx and ios.
#endif
0 голосов
/ 19 ноября 2013

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

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