Supposedly, one can specify that gcc use the C89 Standard when compiling. I see, however, that LC_COLLATE is in <locale.h>, which I guess must be the place it is in for C99. I used gcc -std=c89 and still had to use <locale.h> so it seems that the C89 support is incomplete. I have searched the entire /usr/include directory tree for LC_COLLATE, and this seems to be by design. Is it? Or is it an oversight? The man page states
-std= Determine the language standard. This option is currently only supported when compiling C or C++. A value for this option must be provided; possible values are
c89 iso9899:1990 ISO C90 (same as -ansi).
This seems to me to mean that the language compiled should be as specified in the C89 Standard. Yet the language actually accepted by the compiler seems to be a composite of C89 and C99 when -std=c89 is specified, since <stdlib.h> does not have a definition of LC_COLLATE when -std=c89 is specified.
Mike