| __ALIGNOF__(3) | Library Functions Manual | __ALIGNOF__(3) |
__alignof__ — GNU
extension for alignment of an object
int
__alignof__(void
x);
The
__alignof__()
operator returns the alignment of its operand. The operand can be a type or
an expression. If the operand is a ‘lvalue’, the return value
represents the required alignment of the underlying type, not the actual
alignment of the specified ‘lvalue’.
The returned value is specific to the
architecture and the ABI. If the architecture does not impose strict
alignment requirements,
__alignof__()
returns the minimum required alignment. If
__aligned(3) is used to
increase the alignment, __alignof__() returns the
specified alignment.
The syntax is comparable to the sizeof()
operator. If the architecture aligns integers along 32-bit address
boundaries, the following should print the value 4.
(void)printf("%d\n", __alignof__(int));
On the other hand, the following example should print the value 1, even though this is unlikely to be the actual alignment of the structure member.
struct align {
int x;
char y;
} a;
(void)printf("%d\n", __alignof__(a.y));
This is a non-standard, compiler-specific extension.
| December 20, 2010 | NetBSD 11.0 |