Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Oct 2003 10:06:43 -0500 (EST)
From:      Garrett Wollman <wollman@khavrinen.lcs.mit.edu>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        current@freebsd.org
Subject:   Re: Anyone object to the following change in libc?
Message-ID:  <200310311506.h9VF6h8T030897@khavrinen.lcs.mit.edu>
In-Reply-To: <20031031174658.T3463@gamplex.bde.org>
References:  <BAEB9CED-091F-11D8-B483-000393BB9222@queasyweasel.com> <3F9F4FE6.29C4E178@mindspring.com> <3FA0EEFD.431DD759@mindspring.com> <20031030120925.K80335@beagle.fokus.fraunhofer.de> <200310301659.h9UGxAPk023337@khavrinen.lcs.mit.edu> <20031031174658.T3463@gamplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
<<On Fri, 31 Oct 2003 18:01:34 +1100 (EST), Bruce Evans <bde@zeta.org.au> said:

> POSIX requires in addition [u]int{8,16,32}_t, and [u]int64_t if 64 bit
> integer types exist.  It says that the existence of int8_t implies
> that a byte is 8 bits and CHAR_BIT is 8.  I'm not sure what prevents
> int8_t being smaller than char.

Nothing can be smaller than char (except bitfields, which you can't
take the size of anyway).

The full story:

The POSIX sockets standard (I forget which letter it had) introduced
uint8_t et al, but was aligned to C90.  That amendment was integrated
into the main text at the same time as C99 was, and late in the
process we realized that C99's definition of uint8_t is much stricter
than what the socket standard expected.  (Specifically, the socket
standard allows uint8_t to have padding bits that do not participate
in the domain of the type, but C99 does not.)  Faced with the choice
of having to invent from whole cloth a completely new set of
interfaces to describe packing and unpacking eight-bit network data in
nine- or sixteen-bit characters, or specifying an explicit byte size,
we chose the latter.  It helped that there were no more 36-bit
platforms to be concerned about.  (Some would say that this was a
rather belated recognition of a choice the industry made two decades
ago....  There was, however, a 36-bit implementation of FIPS 151-2, by
UNISYS.)

-GAWollman



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200310311506.h9VF6h8T030897>