On Sun, 25 Oct 2015 19:24:04 +0000 Ian Campbell <ijc+ub...@hellion.org.uk> wrote:
> On Sun, 2015-10-25 at 16:46 +0200, Siarhei Siamashka wrote: > > replace "#include <stdbool.h>" with "typedef int bool;" and try it > > again. > > So don't do that then. Yes, I'm not going to do this. It was just an artificial example, demonstrating how things work. I'm only a little bit worried about a potential rogue typedef unexpectedly coming from one of the include files one day. > In u-boot the "bool" type comes from stdbool.h and it is therefore > completely reasonable to assume that bool in u-boot has the properties > which this implies. Right, except that there are still a few bool related typedefs in the code: https://github.com/u-boot/u-boot/blob/v2015.10/lib/lzma/Types.h#L83 https://github.com/u-boot/u-boot/blob/v2015.10/lib/bzip2/bzlib_private.h#L85 Yes, they come from third-party libraries and don't really redefine bool or _Bool. But the C language did not always have a native bool data type. And historically it had been a common practice to typedef bool to some integer type. One should not be very much surprised upon encountering such code in the wild even now. Regarding the code efficiency. The following example: #include <stdbool.h> bool foo(int x) { return x & 4; } bool bar(int x) { return !!(x & 4); } Compiles into the following code on ARM: 00000000 <foo>: 0: e7e00150 ubfx r0, r0, #2, #1 4: e12fff1e bx lr 00000008 <bar>: 8: e7e00150 ubfx r0, r0, #2, #1 c: e12fff1e bx lr Basically, there is exactly no difference. And removing "!!" only has a cosmetic value for the code that uses the bool definition from <stdbool.h>. As I already said, I'm perfectly fine with either of these variants :-) The purists are welcome to start a crusade eliminating all of the uses of the "!!" construct in the U-Boot code. Probably starting with the other dfu_usb_get_reset() implementations for the sake of consistency: https://github.com/u-boot/u-boot/blob/v2015.10/drivers/usb/gadget/s3c_udc_otg.c#L151 https://github.com/u-boot/u-boot/blob/v2015.10/drivers/usb/gadget/ci_udc.c#L1062 -- Best regards, Siarhei Siamashka _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot