Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Nov 2000 09:20:02 -0800 (PST)
From:      Bruce Evans <bde@zeta.org.au>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: misc/22936: <stdbool.h> broken, needs repair
Message-ID:  <200011181720.JAA84060@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: Bruce Evans <bde@zeta.org.au>
To: dmaddox@sc.rr.com
Cc: FreeBSD-gnats-submit@FreeBSD.ORG
Subject: Re: misc/22936: <stdbool.h> broken, needs repair
Date: Sun, 19 Nov 2000 04:18:45 +1100 (EST)

 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?200011181720.JAA84060>