Макрос `__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