Re: Subtleties of __attribute__((packed))

From: Jan Blunck
Date: Wed Dec 06 2006 - 10:04:40 EST


On 12/6/06, Phil Endecott <phil_arcwk_endecott@xxxxxxxxxxxx> 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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/