Copyright Digital Equipment Corp. All rights reserved.

System_Identification_Macros

 Each implementation of the VSI C compiler automatically defines
 macros that you can use to identify the system on which the program
 is running.  These macros can assist in writing code that executes
 conditionally, depending on the architecture or operating system on
 which the program is running.

 The following table lists the traditional and new spellings of
 these predefined macro names for VSI C on OpenVMS systems.  Both
 spellings are defined for each macro unless ANSI C mode is in
 effect (/STANDARD=ANSI89), in which case only the new spellings are
 defined.

       Traditional spelling      New spelling

            vms                   __vms
            VMS                   __VMS
            vms_version           __vms_VERSION
            VMS_VERSION           __VMS_VERSION
                                  __VMS_VER
                                  __DECC_VER
                                  __DECCXX_VER
            vaxc                  __vaxc
            VAXC                  __VAXC
            vax11c                __vax11C
            VAX11C                __VAX11C
             ---                  __DECC
             ---                  __STDC__
                                  __STDC_HOSTED__
                                  __STDC_VERSION__
                                  __STDC_ISO_10646__
                                  __MIA



 On OpenVMS I64 Systems, VSI C also supports the following
 predefined system identification macro names in all compiler modes:

 __ia64
 __ia64__
 __32BITS
 __INITIAL_POINTER_SIZE

 Predefined macros (with the exception of __STDC_VERSION__,
 __STDC_ISO_10646__, vms_version, VMS_VERSION, __vms_version,
 __VMS_VERSION, and __INITIAL_POINTER_SIZE) are defined as 1 or 0,
 depending on the system you're compiling on (VAX or Alpha
 processor), the compiler defaults, and the qualifiers used.  For
 example, if you compiled using G_floating format, then __D_FLOAT
 and __IEEE_FLOAT (Alpha processors only) are predefined to be 0,
 and __G_FLOAT is predefined as if the following were included
 before every compilation unit:

 #define  __G_FLOAT  1

 These macros can assist in writing code that executes
 conditionally.  They can be used in #elif, #if, #ifdef, and #ifndef
 directives to separate portable and nonportable code in a VSI C
 program.  The vms_version, VMS_VERSION, __vms_version, and
 __VMS_VERSION macros are defined with the value of the OpenVMS
 version on which you are running (for example, Version 6.0).

 The __STDC__ macro is defined to 1 for /STANDARD options ANSI89,
 C99, LATEST and MIA.  It is defined to 2 for /STANDARD=RELAXED and
 to 0 for /STANDARD=MS.  It is not defined for /STANDARD options
 VAXC and COMMON.

 The __STDC_HOSTED__ macro is defined to 1 for /STANDARD=c99 and
 /STANDARD=LATEST.  It is not defined for all other /STANDARD
 keywords.

 The __STDC_VERSION__ macro is defined to 199901L for /STANDARD
 keywords C99, LATEST, RELAXED, MS, PORTABLE.  It is defined to
 199409L when the ISOC94 keyword is specified alone or with the
 ANSI89, MIA, RELAXED, MS, PORTABLE, or COMMON modes.  The macro is
 undefined for the VAXC keyword or for keywords ANSI89, MIA, or
 COMMON without ISOC94 specified.

 The __STDC_ISO_10646__ macro evaluates to an integer constant of
 the form yyyymmL (for example, 199712L), intended to indicate that
 values of type wchar_t are the coded representations of the
 characters defined by ISO/IEC 10646, along with all amendments and
 technical corrigenda as of the specified year and month.