Copyright (C) 2000-2012 |
GNU Info (gcc-295.info)AlignmentInquiring on Alignment of Types or Variables ============================================ 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'. For example, if the target machine requires a `double' value to be aligned on an 8-byte boundary, then `__alignof__ (double)' is 8. This is true on many RISC machines. On more traditional machine designs, `__alignof__ (double)' is 4 or even 2. Some machines never actually require alignment; they allow reference to any data type even at an odd addresses. For these machines, `__alignof__' reports the *recommended* alignment of a type. When the operand of `__alignof__' is an lvalue rather than a type, the value is the largest alignment that the lvalue is known to have. It may have this alignment as a result of its data type, or because it is part of a structure and inherits alignment from that structure. For example, after this declaration: struct foo { int x; char y; } foo1; the value of `__alignof__ (foo1.y)' is probably 2 or 4, the same as `__alignof__ (int)', even though the data type of `foo1.y' does not itself demand any alignment. A related feature which lets you specify the alignment of an object is `__attribute__ ((aligned (ALIGNMENT)))'; see the following section. automatically generated by info2www version 1.2.2.9 |