Hash :
d7630af4
Author :
Date :
2023-03-16T13:45:40
stddef: Define 'unreachable', for ISO C 23 compliance. * lib/verify.h (_GL_HAS_BUILTIN_UNREACHABLE): Don't define if already defined. * lib/stddef.in.h (_GL_HAS_BUILTIN_UNREACHABLE, unreachable): New macros. (abort): Declare if needed for unreachable. * m4/stddef_h.m4 (gl_STDDEF_H): Test for unreachable. * tests/test-stddef.c (test_unreachable_optimization, test_unreachable_noreturn): New functions, based on tests/test-verify.c. * doc/posix-headers/stddef.texi: Mention unreachable.
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
@node stddef.h
@section @file{stddef.h}
POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stddef.h.html}
Gnulib module: stddef
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 old platforms fail to provide @code{wchar_t}.
@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 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