The ANSI C standard specifies exactly what identifiers in the
normal name space are declared by the standard header files. A
compiler is not free to declare additional identifiers in a header
file unless the identifiers follow defined rules (the identifier
must begin with an underscore followed by an uppercase letter or
another underscore).
When you compile with VSI C using any values of /STANDARD that set
strict C standard conformance (ANSI89, MIA, C99, and LATEST),
versions of the standard header files are included that hide many
identifiers that do not follow the rules. The header file
<stdio.h>, for example, hides the definition of the macro TRUE.
The compiler accomplishes this by predefining the macro
__HIDE_FORBIDDEN_NAMES for the above-mentioned /STANDARD values.
You can use the command line qualifier
/UNDEFINE="__HIDE_FORBIDDEN_NAMES" to prevent the compiler from
predefining this macro, thus including macro definitions of the
forbidden names.
The header files are modified to only define additional VAX C names
if __HIDE_FORBIDDEN_NAMES is undefined. For example, <stdio.h>
might contain the following:
#ifndef __HIDE_FORBIDDEN_NAMES
#define TRUE 1
#endif