Listing 2: Platform-specific constant definitions

// file stdhead.h

/* #define OS_DOS 1 */
#define OS_WIN32 1
/* #define OS_QNX 1 */
/* #define OS_UNIX 1 */
/* #define OS_MAC 1 */

#ifdef OS_DOS
#define PATH_SEP '\\'
#define SWITCH_CHAR '/'
#define PLATFORM_STRING "DOS"
#endif

#ifdef OS_WIN32
#define PATH_SEP '\\'
#define SWITCH_CHAR '/'
#define PLATFORM_STRING "32bit Windows"
#endif

#ifdef OS_QNX
#define PATH_SEP '/'
#define SWITCH_CHAR '-'
#define PLATFORM_STRING "QNX"
#endif

#ifdef OS_UNIX
#define PATH_SEP '/'
#define SWITCH_CHAR '-'
#define PLATFORM_STRING "Unix"

/* #define SUB_PLATFORM_STRING "HP-UX" */
/* #define SUB_PLATFORM_STRING "AIX" */
/* #define SUB_PLATFORM_STRING "Solaris" */
/* #define SUB_PLATFORM_STRING "Linux" */

/* #define OS_UNIX_REDHAT_LINUX 1 */
/* #define OS_UNIX_HPUX 1 */
/* #define OS_UNIX_SOLARIS 1 */
/* #define OS_UNIX_AIX 1 */
/* #define OS_UNIX_IRIX */
#endif

#ifdef OS_MAC
#define PATH_SEP ':'
#define SWITCH_CHAR '-'
#define PLATFORM_STRING "Mac"
#endif