Общий макрос для идентификации производной системы UNIX? (Linux, OSX, BSD, ...) - PullRequest
5 голосов
/ 27 октября 2011

Интересно, почему в MacOSX макрос __unix__ не определен.

Разве MacOSX не является производной BSD UNIX?

Если я определю макрос __unix__ в своем коде, могут ли у меня возникнуть некоторые проблемы?

В общем, при проверкена текущей платформе я предпочитаю делать что-то вроде:

#ifdef __unix__
...
#endif

вместо:

#if defined(__unix__) || defined(__APPLE__) || defined(__linux__) || defined(BSD) ...
...
#endif

Может ли быть наилучшим вариантом определить свой собственный макрос в одном месте?Например:

#if defined(__unix__) || defined(__APPLE__) || defined(__linux__) || defined(BSD) ...
#define UNIX_
#endif

1 Ответ

4 голосов
/ 27 октября 2011

POSIX требует, чтобы _POSIX_VERSION было определено в <unistd.h> (также доступно через sysconf(_SC_VERSION)), поэтому попробуйте это.

...