GCC and C89 Standard <stdlib.h> vs <locale.h>

Mike McCarty mike.mccarty at sbcglobal.net
Thu Dec 1 16:10:44 UTC 2005


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
-- 
p="p=%c%s%c;main(){printf(p,34,p,34);}";main(){printf(p,34,p,34);}
This message made from 100% recycled bits.
You have found the bank of Larn.
I can explain it for you, but I can't understand it for you.
I speak only for myself, and I am unanimous in that!




More information about the fedora-list mailing list