Messages in this thread | | | Date | Thu, 28 Mar 2002 12:26:19 -0500 (EST) | From | Bill Davidsen <> | Subject | Re: [patch] ext2_fill_super breakage |
| |
On Thu, 28 Mar 2002, Brian Gerst wrote:
> I'm not sure I follow you here. Compiling this code (gcc 2.96): > > int foo1(void) { return sizeof(struct ext2_sb_info); } > int foo2(struct ext2_sb_info *sbi) { return sizeof(*sbi); } > > yields: > > 00000b70 <foo1>: > b70: b8 dc 00 00 00 mov $0xdc,%eax > b75: c3 ret > > 00000b80 <foo2>: > b80: b8 dc 00 00 00 mov $0xdc,%eax > b85: c3 ret > > The sizes are the same, so unless it makes a difference with another > version of gcc then this is just a cosmetic change.
Not at all, it's good programming practice. If you use the sizeof(*p) notation then the code work right, first time, every time, *even if you change the type of the pointer*. Without that you have to search all the code following the pointer declaration for a use of the type where the pointer should have been dereferenced.
Now scale that to the case where you make a similar change in a macro or typedef. Now you have to search the whole kernel (or NIC drivers, or ...). Doing it right assures a change in one place will not break things at random places all of the source tree.
That used to be part of Intro To Programming Computers...
-- bill davidsen <davidsen@tmr.com> CTO, TMR Associates, Inc Doing interesting things with little computers since 1979.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |