> > 1, it is alignof bug for default gcc on my fc15 and Ubuntu 11.10 etc? > > > > struct sub { > > int raw_lock; > > char a; > > }; > > struct foo { > > struct sub z; > > int slk; > > char y; > > }__attribute__((packed)); > > > > struct foo f1; > > > > __alignof__(f1.z.raw_lock) is 4, but its address actually can align on > > one byte. > > That looks like correct behavior, because the alignment of raw_lock inside of > struct sub is still 4. But it does mean that there can be cases where the > compile-time check is not sufficient, so we might want the run-time check > as well, at least under some config option. According to explanation of gcc, seems it should return 1 when it can be align on char. And then it's useful for design intend. Any comments from gcc guys? ==== http://gcc.gnu.org/onlinedocs/gcc/Alignment.html The keyword __alignof__ allows you to inquire about how an object is aligned, or the minimum alignment usually required by a type. Its syntax is just like sizeof.