На всякий случай, если вы используете Qt, есть этот действительно хороший набор определений, Q_OS_ *, который ведет вас к операционной системе, на которой вы компилируете:
Q_OS_AIX
Q_OS_BSD4
Q_OS_BSDI
Q_OS_CYGWIN
Q_OS_DARWIN
Q_OS_DGUX
Q_OS_DYNIX
Q_OS_FREEBSD
Q_OS_HPUX
Q_OS_HURD
Q_OS_IRIX
Q_OS_LINUX
Q_OS_LYNX
Q_OS_MAC
Q_OS_MSDOS
Q_OS_NETBSD
Q_OS_OS2
Q_OS_OPENBSD
Q_OS_OS2EMX
Q_OS_OSF
...
Они определены в QtGlobal .Существуют даже определения, которые помогут вам определить используемый компилятором Q_CC_ * или целевую оконную систему Q_WS _ *.
Но если вы не используете Qt и хотите использовать универсальный метод, вам, скорее всего, придетсявернуться к пакету Autotools или CMake .
Определение дистрибутивов Linux довольно сложно, но не сложно.Сначала вы должны выяснить, какие дистрибутивы вам нужны, а затем выполнить все виды проверок конкретных файлов / конфигураций, как в в этом примере для тех, которые вы выбрали, поскольку вы не можете реально поддерживать всеМножество дистрибутивов Linux доступны.: -)
Что касается стороны Mac, я позволю экспертам Mac ответить, но это не должно быть так сложно, так как, по крайней мере, вопрос разнообразия исключен.