Date: Fri, 01 May 2009 01:33:28 -0700 From: Julian Elischer <julian@elischer.org> To: Christoph Mallon <christoph.mallon@gmx.de> Cc: rick-freebsd2008@kiwi-computer.com, freebsd-hackers@FreeBSD.org Subject: Re: C99: Suggestions for style(9) Message-ID: <49FAB3D8.90607@elischer.org> In-Reply-To: <49FA8E88.1040905@gmx.de> References: <20090428114754.GB89235@server.vk2pj.dyndns.org> <20090430.090226.1569754707.imp@bsdimp.com> <20090430233648.GA95360@keira.kiwi-computer.com> <20090430.183727.803597558.imp@bsdimp.com> <49FA8E88.1040905@gmx.de>
next in thread | previous in thread | raw e-mail | index | archive | help
Christoph Mallon wrote: > M. Warner Losh schrieb: >> In message: <20090430233648.GA95360@keira.kiwi-computer.com> >> "Rick C. Petty" <rick-freebsd2008@kiwi-computer.com> writes: >> : On Thu, Apr 30, 2009 at 09:02:26AM -0600, M. Warner Losh wrote: >> : > : > This is the biggest one, and I think it may be too soon. >> Also, we >> : > need to be careful on the initialization side of things because we >> : > currently have a lot of code that looks like: >> : > : > : > 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; >> : > : > 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'. >> : : I thought we were talking about C99, in which case this is >> perfectly legal. >> : I certainly use it all the time in my C99 code. >> >> Hmmm, looks like that was added. That's ugly as C++... > > I do not think, this is ugly. On the contrary, it aids maintainability, > because it reduces the scope of variables. Also quite some variables are > only initialised and not changed afterwards, so it's nice to have the > declaration and the only assignment in a single place. IMO this is a > quite natural style, because you don't have anything in the code, before > it is needed: Get the first pointer; if something is wrong, bail out; > get the second pointer - the second pointer does not (textually) exist > before it is needed. > >> : And I thought this was the point of this discussion, to be able to >> declare >> : variables when you first use them. >> >> That's one of the proposed changes, which I think is a mistake and >> would cause the most code churn. And it isn't one of the items that's >> being discussed: only moving variables into inner scopes is on the >> table... > > No, this is not what I intended. The idea is to limit the scope of local > variables as much as is sensible. Maybe I should have been more > explicit. On the other hand, I also did not mention that it is just > about moving to the start of inner block statements. I can see moving declarations to an inner scope {} in some cases but I think allowing us to declare them mixed in with the code, (even though some compilers allow it) will be a mistake. I think this was done to allow macros to declare vars they needed. I'd hate to see it in our code.. > > Christoph > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49FAB3D8.90607>