Messages in this thread | | | Subject | Re: [RFC][PATCH] A generic boolean (version 6) | From | Nicholas Miell <> | Date | Fri, 28 Jul 2006 14:31:11 -0700 |
| |
On Fri, 2006-07-28 at 22:24 +0200, Lars Noschinski wrote: > * Alan Cox <alan@lxorguk.ukuu.org.uk> [2006-07-28 22:14]: > >Ar Iau, 2006-07-27 am 13:13 -0700, ysgrifennodd Nicholas Miell: > >> The compiler knows that "b = !!b;" is a no-op. > > > >b = !!b isn't a no-op. > > For _Bool it should be: > > >Try printf("%d", !!4); > > printf("%d, %d", (_Bool)4, !!(_Bool)4); > > prints "1, 1". From ISO/IEC 9899:1999: > > When any scalar value is converted to _Bool, the result is 0 if the > value compares equal to 0; otherwise, the result is 1. >
We're not talking about scalar values converted to _Bool, we're talking about the kernel getting a supposed _Bool from userspace which doesn't actually contain 0 or 1. (i.e. as far as the kernel and/or gcc is concerned, the scalar conversion has already taken place)
-- Nicholas Miell <nmiell@comcast.net>
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |