Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Nov 2000 10:40:03 -0800 (PST)
From:      "Donald J . Maddox" <dmaddox@sc.rr.com>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: misc/22936: <stdbool.h> broken, needs repair
Message-ID:  <200011181840.KAA01257@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR misc/22936; it has been noted by GNATS.

From: "Donald J . Maddox" <dmaddox@sc.rr.com>
To: Bruce Evans <bde@zeta.org.au>
Cc: FreeBSD-gnats-submit@FreeBSD.ORG
Subject: Re: misc/22936: <stdbool.h> broken, needs repair
Date: Sat, 18 Nov 2000 13:39:09 -0500

 Thanks.  Are you going to commit your fix and close the PR?
 
 On Sun, Nov 19, 2000 at 04:18:45AM +1100, Bruce Evans wrote:
 > On Sat, 18 Nov 2000 Donald.J.Maddox@cae88-102-101.sc.rr.com wrote:
 > 
 > > >Description:
 > > 	The header file <stdbool.h> contains a defective
 > > conditional that breaks several ports.  Any code that includes
 > > <stdbool.h> will break if compiled by gcc...  Example:
 > 
 > Much more is broken than that, at least according to a C99 draft (n869).
 > 1) _Bool is a first class type (like int), so it can't be declared as
 >    a typedef (unless compiler magic supports such a declaration).
 > 2) `true' and `false' are supposed to be usable in cpp expressions, so
 >    they can't be declared as enum values.
 > 3) The definitions of `false' and `true' as themself don't work in K&R
 >    mode.  This is not a serious bug, since K&R code shouldn't include
 >    <stdbool.h>.
 > 4) Support for the Standard C (c99) _Bool is premature, since gcc doesn't
 >    support _Bool as a first class type.
 > 
 > <stdbool.h> is essentially a compatibility hack for pre-c99 compilers.
 > The current version seems to be based on the gcc version.  Both versions
 > will break when gcc actually supports _Bool.
 > 
 > Here is a version compatible with the C99 draft and K&R:
 > 
 > ---
 > #define	__bool_true_false_are_defined	1
 > #define	false	0
 > #define	true	1
 > 
 > #define	bool	_Bool
 > #if __STDC_VERSION__ < 199901L
 > typedef	int	_Bool;
 > #endif
 > ---
 > 
 > Bruce
 > 
 


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




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