cvs commit: src/lib/libc/string strcasecmp.c
Matthew Dillon
dillon at apollo.backplane.com
Fri Apr 29 09:35:53 PDT 2005
:...
:compatible with either.
:
:machine/limits.h:
:
:#ifdef __CHAR_UNSIGNED__
:#define CHAR_MAX UCHAR_MAX /* max value for a char */
:#define CHAR_MIN 0 /* min value for a char */
:#else
:#define CHAR_MAX SCHAR_MAX /* max value for a char */
:#define CHAR_MIN SCHAR_MIN /* min value for a char */
:#endif
:
:So in the default case, Matt is right. But it is a choice we as an
:implementation can make ourselves.
:
:--
:Jeroen Ruigrok van der Werven <asmodai(at)wxs.nl> / asmodai / kita no mono
Yes and no. In theory you can make char's unsigned, and in fact
they are on some machines (like SGI's, I believe). But the
standard is a throwback for old architectures that can't handle
signed chars, and actually making a char unsigned by default on
a modern machine just creates massive confusion. (keep in mind
that even the venerable 6502 and 8085 had no problem with
'signed' chars).
It's so confusing that even systems with unsigned char defaults
have compiler options to make them signed by default... which
makes things even MORE confusing. But you see, they didn't
have a choice. People were screaming about their systems being
incompatible because chars were unsigned when everyone else's
chars were signed.
So ... for all intents and purposes, we can assume that char's
are signed, because there is no way they will be anything else
on any architecture we ever port to.
-Matt
Matthew Dillon
<dillon at xxxxxxxxxxxxx>
More information about the Commits
mailing list