Queries the alignment requirement of its operand type.
_Alignof( type-name ) | (since C11) |
This operator is typically used through the convenience macro alignof, which is provided in the header stdalign.h.
Returns the alignment requirement of the type named by type-name. If type-name is an array type, the result is the alignment requirement of the array element type. The type-name cannot be function type or an incomplete type.
The result is an integer constant of type size_t.
The operand is not evaluated (so external identifiers used in the operand do not have to be defined).
| If type is a VLA type, its size expression is not evaluated. | (since C2x) |
The use of alignof with expressions is allowed by some C compilers as a non-standard extension.
#include <stdio.h>
#include <stddef.h>
#include <stdalign.h>
int main(void)
{
printf("Alignment of char = %zu\n", alignof(char));
printf("Alignment of max_align_t = %zu\n", alignof(max_align_t));
printf("alignof(float[10]) = %zu\n", alignof(float[10]));
printf("alignof(struct{char c; int n;}) = %zu\n",
alignof(struct {char c; int n;}));
}Possible output:
Alignment of char = 1
Alignment of max_align_t = 16
alignof(float[10]) = 4
alignof(struct{char c; int n;}) = 4|
(C11) | a type with alignment requirement as great as any other scalar type (typedef) |
| _Alignas specifier | sets alignment requirements of an object (since C11) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/c/language/alignof