blob: 6497dcda2af4029bd71d0077d9d69ac4ca7d37e6 [file] [log] [blame]
Richard Smithf88eeb72015-10-08 22:25:27 +00001// -*- C++ -*-
2//===--------------------------- stddef.h ---------------------------------===//
3//
Chandler Carruthd2012102019-01-19 10:56:40 +00004// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
Richard Smithf88eeb72015-10-08 22:25:27 +00007//
8//===----------------------------------------------------------------------===//
9
10#if defined(__need_ptrdiff_t) || defined(__need_size_t) || \
11 defined(__need_wchar_t) || defined(__need_NULL) || defined(__need_wint_t)
Richard Smith523b1722015-10-09 00:26:50 +000012
13#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
14#pragma GCC system_header
15#endif
16
Richard Smithf88eeb72015-10-08 22:25:27 +000017#include_next <stddef.h>
18
19#elif !defined(_LIBCPP_STDDEF_H)
20#define _LIBCPP_STDDEF_H
21
22/*
23 stddef.h synopsis
24
25Macros:
26
27 offsetof(type,member-designator)
28 NULL
29
30Types:
31
32 ptrdiff_t
33 size_t
34 max_align_t
35 nullptr_t
36
37*/
38
39#include <__config>
Richard Smithf88eeb72015-10-08 22:25:27 +000040
41#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
42#pragma GCC system_header
43#endif
44
Richard Smith523b1722015-10-09 00:26:50 +000045#include_next <stddef.h>
46
Richard Smithf88eeb72015-10-08 22:25:27 +000047#ifdef __cplusplus
48
49extern "C++" {
50#include <__nullptr>
51using std::nullptr_t;
52}
53
54// Re-use the compiler's <stddef.h> max_align_t where possible.
David L. Jones8465cf12017-02-10 01:27:42 +000055#if !defined(__CLANG_MAX_ALIGN_T_DEFINED) && !defined(_GCC_MAX_ALIGN_T) && \
Kamil Rytarowski5678f1e2018-08-20 22:29:20 +000056 !defined(__DEFINED_max_align_t) && !defined(__NetBSD__)
Richard Smithf88eeb72015-10-08 22:25:27 +000057typedef long double max_align_t;
58#endif
59
60#endif
61
62#endif // _LIBCPP_STDDEF_H