This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: More stdbool tweaking


Daniel Jacobowitz <drow@mvista.com> 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 (b)
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.

Ian

/* 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>
 */

#ifndef _STDBOOL_H
#define _STDBOOL_H

#ifndef __cplusplus

#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 */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]