Troubleshooting
Problem
The __USE_ISOC99 macro is defined unnecessarily by the GCC header file features.h in Red Hat Enterprise Linux 6 (RHEL6).
Symptom
The __USE_ISOC99 macro is defined in the GNU header files in RHEL6, even when strict conformance to the C89 language level is specified with the XL C compiler option -qlanglvl=stdc89. This is different behaviour than what occurs on RHEL5 or SLES11 with the same version of the compiler.
Any code that is dependant on this macro not being defined, or build configurations that have code paths dependant on this macro might be affected. In addition, new language features available only in C99 are enabled in the GCC header files.
Cause
The __USE_ISOC99 macro is defined unnecessarily by the GCC header file features.h.
Environment
Red Hat Enterprise Linux 6 (RHEL6)
Resolving The Problem
The macro __STRICT_ANSI can be defined to give the previous expected behaviour. This can be done by adding -D__STRICT_ANSI to a compile command, or by using the c89 compiler invocation, which predefines __STRICT_ANSI.
Was this topic helpful?
Document Information
Modified date:
08 August 2018
UID
swg21455370