This is the mail archive of the
mailing list for the binutils project.
Re: PATCH: More stdbool tweaking
Daniel Jacobowitz <firstname.lastname@example.org> writes:
> > The only bfd.h issue is the definitions of true and false. Daniel has
> > proposed a simple patch which works provided stdbool.h is included first. I
> > already proposed a simple patch which should work in all cases:
> > http://sources.redhat.com/ml/binutils/2002-02/msg00068.html
> > However, I have not tested it.
> (Is the assumption that the first thing in an enum has value 0 always
> valid? I think so, but not sure.)
Yes. If it were not, the current code would not work. A lot of code
in BFD uses a boolean by saying
If false were not 0, this would fail.
> In any case, your patch would not finesse the problem. False is
> defined to 'false', an enum value, in <stdbool.h>. While the value
> false evalutates to 0, that would not fix the problem, since it is not
> the same.
Not in the version of stdbool.h distributed with gcc 3.0.3. I have
appended it. Can you send a copy of the stdbool.h which you are
looking at? Don't get confused by the C++ code.
/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* As a special exception, if you include this header file into source
files compiled by GCC, this header file does not by itself cause
the resulting executable to be covered by the GNU General Public
License. This exception does not however invalidate any other
reasons why the executable file might be covered by the GNU General
Public License. */
* ISO C Standard: 7.16 Boolean type and values <stdbool.h>
#define bool _Bool
#define true 1
#define false 0
#else /* __cplusplus */
/* Supporting <stdbool.h> in C++ is a GCC extension. */
#define _Bool bool
#define bool bool
#define false false
#define true true
#endif /* __cplusplus */
/* Signal that all the definitions are present. */
#define __bool_true_false_are_defined 1
#endif /* stdbool.h */