6 * alignof - ALIGNOF() macro to determine alignment of a type.
8 * Many platforms have requirements that certain types must be aligned
9 * to certain address boundaries, such as ints needing to be on 4-byte
10 * boundaries. Attempting to access variables with incorrect
11 * alignment may cause performance loss or even program failure (eg. a
14 * There are times which it's useful to be able to programatically
15 * access these requirements, such as for dynamic allocators.
20 * #include <ccan/alignof/alignof.h>
22 * // Output contains "ALIGNOF(char) == 1"
23 * // Will also print out whether an onstack char array can hold a long.
24 * int main(int argc, char *argv[])
26 * char arr[sizeof(int)];
28 * printf("ALIGNOF(char) == %zu\n", ALIGNOF(char));
29 * if ((unsigned long)arr % ALIGNOF(int)) {
30 * printf("arr %p CANNOT hold an int\n", arr);
33 * printf("arr %p CAN hold an int\n", arr);
38 * License: Public domain
39 * Author: Rusty Russell <rusty@rustcorp.com.au>
41 int main(int argc, char *argv[])
46 if (strcmp(argv[1], "depends") == 0) {
47 printf("ccan/build_assert\n");