Zaphod Beeblebrox schrieb:
On Fri, May 1, 2009 at 4:30 AM, Julian Elischer <[email protected]> wrote:
As an old-fart I have found many cases where what I thought was
a silly style rule, turned out to save my work in some way.
Christoph Mallon wrote:
struct foo *fp;
struct bar *bp;
fp = get_foo();
if (!fp) return;
bp = fp->bp;
this can't easily be translated to the more natural:
struct foo *fp = get_foo();
struct bar *bp = fp->bp;
Well more natural for you, but not necessarily for everyone,
and NOT the same as what is there now, as you noticed.
since really you'd want to write:
struct foo *fp = get_foo();
if (!fp) return;
struct bar *bp = fp->bp;
which isn't legal in 'C'. However, we have enough where this isn't
You're mistaken, this is perfectly legal C. See ISO/IEC 9899:1999 (E)
ยง6.8.2:1. In short: you can mix statements and declarations.
Sure, but it's still very bad: If I'm not mistaken, this would mean that
"bp" would only be valid within the "if" clause --- which isn't very useful.
You are mistaken. Re-read the "if": It already contains a "return;" as
then-part. The declaration of "bp" has no relation to the "if".
In fact this is very good: "bp" can only be used after the "if", because
it is declared after it. Further, it most probably is only assigned a
value once, so declaration and the signle assignment are in the same
place, which aids readability and makes the code more concise.
Christoph
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[email protected]"