From mboxrd@z Thu Jan 1 00:00:00 1970 From: York Sun Date: Tue, 8 Jan 2013 11:56:17 -0800 Subject: [U-Boot] [PATCH] Introduce a global bool type In-Reply-To: <20130108190715.D2D14202B69@gemini.denx.de> References: <1357596628-27501-1-git-send-email-yorksun@freescale.com> <20130107223942.94BED20DA7E@gemini.denx.de> <6AE080B68D46FC4BA2D2769E68D765B70820541F@039-SN2MPN1-023.039d.mgd.msft.net> <20130108174920.BAB22202B69@gemini.denx.de> <50EC5D29.1070408@freescale.com> <20130108190715.D2D14202B69@gemini.denx.de> Message-ID: <50EC79E1.1080802@freescale.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 01/08/2013 11:07 AM, Wolfgang Denk wrote: > Dear Timur Tabi, > > In message <50EC5D29.1070408@freescale.com> you wrote: >> >>> _Bool has been introduced very late to any C standard, and you can >>> still see this from the ugly, unnatural name. >> >> It was introduced in C99, which is over 12 years old. > > And how old is C? I think the "official" announcment was 1972, so > that's more than twice as long without that addition. > >>> work wit than a CLI. And I've seen more than one case where bugs were >>> caused by using "proper bool types" like this: >>> >>> i = 0; >>> j = 0; >>> k = 2; >>> >>> if ((i | j | k) == true) ... >> >> Ok, but this is just wrong. i, j, and k are not boolean types, so they >> should not be compared with 'true' or 'false'. I don't think you'll find >> any disagreement with that. > > You are right. And I wrote that it's a bug. But this is what you can > easily get from using boolean types. This is example has not been > invented by me. I don't even claim that this was good programming > style - all I want to say is that from what I have seen the boolean > types are not a panacea; they cause new problems as well. > No disagree. How shall we close this? Will some change like below acceptable? diff --git a/include/linux/types.h b/include/linux/types.h index 925ece7..f07ba41 100644 --- a/include/linux/types.h +++ b/include/linux/types.h @@ -7,6 +7,7 @@ #include #include +#include #ifndef __KERNEL_STRICT_NAMES @@ -113,10 +114,6 @@ typedef __u64 u_int64_t; typedef __s64 int64_t; #endif -typedef _Bool bool; -#define false 0 -#define true 1 - #endif /* __KERNEL_STRICT_NAMES */ /* York