clang 18.0.0git
stddef.h
Go to the documentation of this file.
1/*===---- stddef.h - Basic type definitions --------------------------------===
2 *
3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 * See https://llvm.org/LICENSE.txt for license information.
5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 *
7 *===-----------------------------------------------------------------------===
8 */
9
10#if !defined(__STDDEF_H) || defined(__need_ptrdiff_t) || \
11 defined(__need_size_t) || defined(__need_rsize_t) || \
12 defined(__need_wchar_t) || defined(__need_NULL) || \
13 defined(__need_nullptr_t) || defined(__need_unreachable) || \
14 defined(__need_max_align_t) || defined(__need_offsetof) || \
15 defined(__need_wint_t) || \
16 (defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1)
17
18#if !defined(__need_ptrdiff_t) && !defined(__need_size_t) && \
19 !defined(__need_rsize_t) && !defined(__need_wchar_t) && \
20 !defined(__need_NULL) && !defined(__need_nullptr_t) && \
21 !defined(__need_unreachable) && !defined(__need_max_align_t) && \
22 !defined(__need_offsetof) && !defined(__need_wint_t)
23/* Always define miscellaneous pieces when modules are available. */
24#if !__has_feature(modules)
25#define __STDDEF_H
26#endif
27#define __need_ptrdiff_t
28#define __need_size_t
29/* ISO9899:2011 7.20 (C11 Annex K): Define rsize_t if __STDC_WANT_LIB_EXT1__ is
30 * enabled. */
31#if defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1
32#define __need_rsize_t
33#endif
34#define __need_wchar_t
35#define __need_NULL
36#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) || \
37 defined(__cplusplus)
38#define __need_nullptr_t
39#endif
40#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
41#define __need_unreachable
42#endif
43#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \
44 (defined(__cplusplus) && __cplusplus >= 201103L)
45#define __need_max_align_t
46#endif
47#define __need_offsetof
48/* wint_t is provided by <wchar.h> and not <stddef.h>. It's here
49 * for compatibility, but must be explicitly requested. Therefore
50 * __need_wint_t is intentionally not defined here. */
51#endif
52
53#if defined(__need_ptrdiff_t)
54#include <__stddef_ptrdiff_t.h>
55#undef __need_ptrdiff_t
56#endif /* defined(__need_ptrdiff_t) */
57
58#if defined(__need_size_t)
59#include <__stddef_size_t.h>
60#undef __need_size_t
61#endif /*defined(__need_size_t) */
62
63#if defined(__need_rsize_t)
64#include <__stddef_rsize_t.h>
65#undef __need_rsize_t
66#endif /* defined(__need_rsize_t) */
67
68#if defined(__need_wchar_t)
69#include <__stddef_wchar_t.h>
70#undef __need_wchar_t
71#endif /* defined(__need_wchar_t) */
72
73#if defined(__need_NULL)
74#include <__stddef_null.h>
75#undef __need_NULL
76#endif /* defined(__need_NULL) */
77
78#if defined(__need_nullptr_t)
79#include <__stddef_nullptr_t.h>
80#undef __need_nullptr_t
81#endif /* defined(__need_nullptr_t) */
82
83#if defined(__need_unreachable)
85#undef __need_unreachable
86#endif /* defined(__need_unreachable) */
87
88#if defined(__need_max_align_t)
90#undef __need_max_align_t
91#endif /* defined(__need_max_align_t) */
92
93#if defined(__need_offsetof)
94#include <__stddef_offsetof.h>
95#undef __need_offsetof
96#endif /* defined(__need_offsetof) */
97
98/* Some C libraries expect to see a wint_t here. Others (notably MinGW) will use
99__WINT_TYPE__ directly; accommodate both by requiring __need_wint_t */
100#if defined(__need_wint_t)
101#include <__stddef_wint_t.h>
102#undef __need_wint_t
103#endif /* __need_wint_t */
104
105#endif