Branch
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
@node stddef.h
@section @file{stddef.h}
POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/stddef.h.html}
Gnulib module: stddef-h
@mindex stddef-h
Portability problems fixed by Gnulib:
@itemize
@item
Some platforms fail to provide @code{unreachable}, which was added in C23:
GCC 13, clang 15, AIX with xlc 12.1, Solaris with Sun C 5.15, and others.
@item
Some platforms fail to provide @code{max_align_t}, which was added in C11:
NetBSD 8.0, Solaris 11.0, and others.
@item
@code{max_align_t} does not have the expected alignment on some platforms:
NetBSD 8.0/x86, AIX 7.2 with xlc in 64-bit mode.
@item
Some platforms provide a @code{NULL} macro that cannot be used in arbitrary
expressions:
NetBSD 5.0
@item
Some platforms provide a @code{NULL} macro whose value does not have the size
of a pointer:
AIX 7.2 with xlc in 64-bit mode.
@item
When this header file is provided by TinyCC 0.9.27 on glibc or macOS systems,
it does not fulfil the expectations of other system header files.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
@cindex null pointer type
Some platforms fail to provide @code{nullptr_t},
which Gnulib cannot usefully emulate:
GCC 12, Clang 15, and other pre-2023 C compilers.
@item
Some platforms define @code{nullptr_t} even when @code{<stddef.h>} is
not included:
@c https://gcc.gnu.org/PR114869
GCC 14
@item
Some platforms provide an @code{offsetof} macro that cannot be used in
arbitrary expressions:
Solaris 11.4
This problem can be worked around by parenthesizing the
@code{offsetof} expression in the unlikely case you use it with
@code{sizeof} or @samp{[]}.
@end itemize