[U-Boot] [PATCH] Introduce a global bool type
York Sun
yorksun at freescale.com
Tue Jan 8 20:56:17 CET 2013
On 01/08/2013 11:07 AM, Wolfgang Denk wrote:
> Dear Timur Tabi,
>
> In message <50EC5D29.1070408 at 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 <linux/posix_types.h>
#include <asm/types.h>
+#include <stdbool.h>
#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
More information about the U-Boot
mailing list