Re: Anyone object to the following change in libc?

From: Bruce Evans <bde_at_zeta.org.au>
Date: Fri, 31 Oct 2003 18:01:34 +1100 (EST)
On Thu, 30 Oct 2003, Garrett Wollman wrote:

> <<On Thu, 30 Oct 2003 12:32:46 +0100 (CET), Harti Brandt <brandt_at_fokus.fraunhofer.de> said:
>
> > "The c89 utility (which specified a compiler for the C Language specified
> > by the 108 ISO/IEC 9899: 1990 standard) has been replaced by a c99 utility
> > (which specifies a compiler for 109 the C Language specified by the
> > ISO/IEC 9899: 1999 standard)."
>
> More specifically: IEEE Std. 1003.1-2001 is aligned to ISO/IEC
> 9899:1999 in all respects.  C99 alignment was one of the principal
> reasons for bringing out a whole new standard in the first place,
> rather than continuing the amendment process.  (This is also why POSIX
> now requires eight-bit bytes.)

This doesn't follow, since C99 doesn't require 8-bit bits.  int8_t is
optional in C99 and all code that uses it unconditionally is unportable.
Similarly for most other types in <stdint.h>.  The required ones are
[u]int_least{8,16,32,64}_t and [u]int_fast{8,16,32,64}_t and [u]intmax_t,
i.e., nothing that can't be declared in C90 except a 64-bit type.

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.

Bruce
Received on Thu Oct 30 2003 - 22:01:53 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:27 UTC