summaryrefslogtreecommitdiff
path: root/doc/posix-headers/stddef.texi
blob: e240f93363c90e7f7770aadf5d1c9c51b479540e (plain)
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
@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{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