Understanding alignment in g++
Yang Zhang
yanghatespam@gmail.com
Sat Feb 14 18:37:00 GMT 2009
Andrew Haley wrote:
> Yang Zhang wrote:
>> Ian Lance Taylor wrote:
>>> Yang Zhang <yanghatespam@gmail.com> writes:
>>>
>>>> I expected a cast-align warning or something.
>>> If you use -Wcast-align you should get a warning for targets where the
>>> cast increases the required alignment.
>> Sorry for being unclear. I was trying to say that I had specified
>> -Wcast-align but got no such warning. Any hints?
>
> `-Wcast-align'
> Warn whenever a pointer is cast such that the required alignment
> of the target is increased. For example, warn if a `char *' is
> cast to an `int *' on machines where integers can only be accessed
> at two- or four-byte boundaries.
>
> but on x86 there is no such restriction.
>
> Andrew.
So __alignof__/alignment_of<> have nothing to do with the required
alignment of the type, but have instead to do with the gcc-determined
"default alignment" of the type?
Is there something analogous to __alignof__ that can tell me the
required alignment? (E.g., if I'm serializing data and trying to pack
together everything without padding...)
--
Yang Zhang
http://www.mit.edu/~y_z/
More information about the Gcc-help
mailing list