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]"

Reply via email to