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