Макрос `__unix__` не определен в MacOS X

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

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

Ответ 1

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

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

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

Ответ 2

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

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

#if defined(__unix__) || defined(__unix) || \
        (defined(__APPLE__) && defined(__MACH__))
...
#endif