Макрос `__unix__` не определен в MacOS X - PullRequest
12 голосов
/ 15 августа 2011

Я заметил, что в MacOS X (Lion) макрос __unix__ не определен. Поскольку MacOS имеет корни в BSD UNIX, разве это не так?

Можно ли сообщить компилятору / препроцессору, что я хочу, чтобы это считалось системой UNIX?

Ответы [ 2 ]

13 голосов
/ 15 августа 2011

Предопределенный сайт макросов предлагает использовать:

#if defined(unix) || defined(__unix__) || defined(__unix)
# define PREDEF_PLATFORM_UNIX
#endif

Различать системы UNIX. У них также есть предупреждения о количестве компиляторов, которые не устанавливают ни один из них. В зависимости от того, почему вы заботитесь о том, что это за платформа, вам, возможно, будет лучше взглянуть на время настройки (в configure.ac или в любой используемой вами системе сборки).

7 голосов
/ 19 апреля 2013

Я думаю, этот сайт дает наиболее полный ответ.

Короче говоря, чтобы включить платформы Apple и распространенные платформы Unix, вам потребуется:

#if defined(__unix__) || defined(__unix) || \
        (defined(__APPLE__) && defined(__MACH__))
...
#endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...