xref: /openbsd/include/stddef.h (revision c9b8f0a2)
1*c9b8f0a2Skettenis /*	$OpenBSD: stddef.h,v 1.14 2017/01/06 14:36:50 kettenis Exp $	*/
2df930be7Sderaadt /*	$NetBSD: stddef.h,v 1.4 1994/10/26 00:56:26 cgd Exp $	*/
3df930be7Sderaadt 
4df930be7Sderaadt /*-
5df930be7Sderaadt  * Copyright (c) 1990 The Regents of the University of California.
6df930be7Sderaadt  * All rights reserved.
7df930be7Sderaadt  *
8df930be7Sderaadt  * Redistribution and use in source and binary forms, with or without
9df930be7Sderaadt  * modification, are permitted provided that the following conditions
10df930be7Sderaadt  * are met:
11df930be7Sderaadt  * 1. Redistributions of source code must retain the above copyright
12df930be7Sderaadt  *    notice, this list of conditions and the following disclaimer.
13df930be7Sderaadt  * 2. Redistributions in binary form must reproduce the above copyright
14df930be7Sderaadt  *    notice, this list of conditions and the following disclaimer in the
15df930be7Sderaadt  *    documentation and/or other materials provided with the distribution.
16e33d3bd3Smillert  * 3. Neither the name of the University nor the names of its contributors
17df930be7Sderaadt  *    may be used to endorse or promote products derived from this software
18df930be7Sderaadt  *    without specific prior written permission.
19df930be7Sderaadt  *
20df930be7Sderaadt  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21df930be7Sderaadt  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22df930be7Sderaadt  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23df930be7Sderaadt  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24df930be7Sderaadt  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25df930be7Sderaadt  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26df930be7Sderaadt  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27df930be7Sderaadt  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28df930be7Sderaadt  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29df930be7Sderaadt  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30df930be7Sderaadt  * SUCH DAMAGE.
31df930be7Sderaadt  *
32df930be7Sderaadt  *	@(#)stddef.h	5.5 (Berkeley) 4/3/91
33df930be7Sderaadt  */
34df930be7Sderaadt 
35df930be7Sderaadt #ifndef _STDDEF_H_
36df930be7Sderaadt #define _STDDEF_H_
37df930be7Sderaadt 
38c916d948Smillert #include <sys/cdefs.h>
396ecde746Smillert #include <sys/_null.h>
40c916d948Smillert #include <sys/_types.h>
41df930be7Sderaadt 
42c916d948Smillert #ifndef _PTRDIFF_T_DEFINED_
43c916d948Smillert #define _PTRDIFF_T_DEFINED_
44c916d948Smillert typedef	__ptrdiff_t	ptrdiff_t;
45df930be7Sderaadt #endif
46df930be7Sderaadt 
47c916d948Smillert #ifndef	_SIZE_T_DEFINED_
48c916d948Smillert #define	_SIZE_T_DEFINED_
49c916d948Smillert typedef	__size_t	size_t;
50c916d948Smillert #endif
51c916d948Smillert 
52c8fdc41eSespie /* in C++, wchar_t is a built-in type */
53c916d948Smillert #if !defined(_WCHAR_T_DEFINED_) && !defined(__cplusplus)
54c916d948Smillert #define _WCHAR_T_DEFINED_
55c916d948Smillert typedef	__wchar_t	wchar_t;
56c8fdc41eSespie #endif
57df930be7Sderaadt 
58c916d948Smillert #ifndef	_WINT_T_DEFINED_
59c916d948Smillert #define	_WINT_T_DEFINED_
60c916d948Smillert typedef	__wint_t	wint_t;
61bc92a556Sespie #endif
62bc92a556Sespie 
63c916d948Smillert #ifndef	_MBSTATE_T_DEFINED_
64c916d948Smillert #define	_MBSTATE_T_DEFINED_
65c916d948Smillert typedef	__mbstate_t	mbstate_t;
66561d433dSespie #endif
67561d433dSespie 
6836909e64Sjsg #if __GNUC_PREREQ__(4, 0)
6936909e64Sjsg #define	offsetof(type, member)	__builtin_offsetof(type, member)
7036909e64Sjsg #else
71df930be7Sderaadt #define	offsetof(type, member)	((size_t)(&((type *)0)->member))
7236909e64Sjsg #endif
73df930be7Sderaadt 
74*c9b8f0a2Skettenis #if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103
75*c9b8f0a2Skettenis #ifndef __CLANG_MAX_ALIGN_T_DEFINED
76*c9b8f0a2Skettenis #define __CLANG_MAX_ALIGN_T_DEFINED
77*c9b8f0a2Skettenis typedef struct {
78*c9b8f0a2Skettenis 	long long __max_align_ll __aligned(__alignof__(long long));
79*c9b8f0a2Skettenis 	long double __max_align_ld __aligned(__alignof__(long double));
80*c9b8f0a2Skettenis } max_align_t;
81*c9b8f0a2Skettenis #endif
82*c9b8f0a2Skettenis #endif
83*c9b8f0a2Skettenis 
84df930be7Sderaadt #endif /* _STDDEF_H_ */
85