Приложение 2. Определения препроцессора для intlib.c

Определение Комментарий
основное дополнительное
INTER_MSDOS MSDOS MS-DOS для реального режима
INTER_DPMI MSDOS MS-DOS для защищенного режима
INTER_OS2   IBM OS/2
INTER_MSWINDOWS WIN32, WINDOWS_NT ОС Windows NT, 2000, XP
INTER_MSWINDOWS WIN32 ОС Windows 9x, ME
INTER_MSWINDOWS WIN32, WINCE, WINDOWS_NT ОС Windows CE
INTER_MSWINDOWS WIN16, WIN3XX ОС Windows 3.x
OS9000   Microware OS9000
OS9000 OS9 Microware OS9
VMS VAX, _VMS_ VMS или OpenVMS
QNX   QNX, ЗОСРВ «Нейтрино»
QNX QNX6 QNX6, ЗОСРВ «Нейтрино»
VXWORKS   VxWorks
OS2000 VXWORKS ОС2000
INTER_NLM   Novell NetWare
UNIX BSD ОС семейства BSD FreeBSD, OpenBSD, BSDI и т.п.
UNIX LINUX Linux
UNIX UNIXSCO,SCO SCO OpenServer
UNIX SINIX SINIX
UNIX UNIXWARE Novell UnixWare, SCO UnixWare
UNIX USIX USIX
UNIX DIGITAL_UNIX Digital UNIX, Compaq UNIX, True64
UNIX SUN Solaris
UNIX AIX AIX
UNIX SGI IRIX
UNIX MSVS, LINUX МСВС
UNIX MSVT, LINUX МСВТ

Кроме макросов, определяющих ОС, существуют дополнительные макросы, определяющие особенности ОС.

Имя макроса Необходимость применения
__64BIT_ARCH__ В случае 64-битной компиляции (адрес – 8 байт)
SUPP_LONGLONG В случае если ОС поддерживает тип данных long long
__UNSIG_CHAR__ В случае если тип данных char по умолчанию беззнаковый
DATA_MSBF На MSBF архитектурах (например, SPARC)
LONG_ALIGN В случае если архитектура требует выровненный доступ к данным (SPARC, ARM и т.п.)
SOCKETS При работе через Unix Domain Sockets (для всех ОС UNIX)
LIN_PTHREAD В ОС UNIX для сборки многонитевой версии (posix threads)
SVR42, SVR4 Во всех ОС UNIX

Пример

Трансляция для UNIX BSD.

$ cc -c -DUNIX -DFREEBSD -D_VER_MAX=600 intlib.c