Messages in this thread | | | Date | Wed, 6 Dec 2006 16:04:22 +0100 | From | "Jan Blunck" <> | Subject | Re: Subtleties of __attribute__((packed)) |
| |
On 12/6/06, Phil Endecott <phil_arcwk_endecott@chezphil.org> wrote: > Dear All, > > I used to think that this: > > struct foo { > int a __attribute__((packed)); > char b __attribute__((packed)); > ... more fields, all packed ... > }; > > was exactly the same as this: > > struct foo { > int a; > char b; > ... more fields ... > } __attribute__((packed)); > > but it is not, in a subtle way. >
The same code is generated. The difference is that usually packing the whole struct isn't as error-prone as packing every element. Besides that the gcc warns about packing objects that have an alignment of 1. This is the reason why we should use the second approach. - 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/
| |