__ALIGNOF__(3) | Library Functions Manual | __ALIGNOF__(3)

# NAME

`__alignof__` —
GNU extension for alignment of an object

# SYNOPSIS

int
`__alignof__`(void x);

# DESCRIPTION

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.

# EXAMPLES

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));

# SEE ALSO

gcc(1), attribute(3), offsetof(3), typeof(3)

# CAVEATS

This is a non-standard, compiler-specific extension.

December 20, 2010 | NetBSD 9.2