On 08/17/2010 11:09 AM, Jes Sorensen wrote:
On 08/12/10 19:50, Blue Swirl wrote:
+While using "bool" is good for readability, it comes with minor caveats:
+ - Don't use "bool" in places where the type size must be constant across
+ all systems, like public interfaces and on-the-wire protocols.
+ - Don't compare a bool variable against the literal, "true",
+ since a value with a logical non-false value need not be "1".
+ I.e., don't write "if (seen == true) ...". Rather, write "if (seen)...".
I'd strongly discourage the use of bool in any code. It doesn't provide
anything guarantees
It's actually better than int:
int flag = word & BIT;
can lose the BIT if it is outside the range of an int, whereas
bool flag = word & BIT;
will be true if BIT is set. Not to mention the improved readability
(which appears to be a downside to C fans).
and you are not sure about the size of it. Using int
is safer. IMHO bool is one of the worse examples of changes to the C
standard :(
bool foo = false;
foo++;
What's incrementing a bool supposed to mean? Even more true?
if (foo == true)....
As it happens, this will succeed.
The other thing that might be worth mentioning in the int/long section
is that long is complicated in broken development environments such as
Windows where it is only 32 bit :(
It's only complicated if you assume sizeof(long) == sizeof(void *).
While we're used to it from Linux, all you need is s/long/intptr_t/ and
you're all set.
--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.