mirror of
git://git.musl-libc.org/musl
synced 2024-12-24 07:32:49 +00:00
321f4fa906
unfortunately this needs to be able to vary by arch, because of a huge mess GCC made: the GCC definition, which became the ABI, depends on quirks in GCC's definition of __alignof__, which does not match the formal alignment of the type. GCC's __alignof__ unexpectedly exposes the an implementation detail, its "preferred alignment" for the type, rather than the formal/ABI alignment of the type, which it only actually uses in structures. on most archs the two values are the same, but on some (at least i386) the preferred alignment is greater than the ABI alignment. I considered using _Alignas(8) unconditionally, but on at least one arch (or1k), the alignment of max_align_t with GCC's definition is only 4 (even the "preferred alignment" for these types is only 4).
26 lines
491 B
C++
26 lines
491 B
C++
#ifndef _STDDEF_H
|
|
#define _STDDEF_H
|
|
|
|
#ifdef __cplusplus
|
|
#define NULL 0L
|
|
#else
|
|
#define NULL ((void*)0)
|
|
#endif
|
|
|
|
#define __NEED_ptrdiff_t
|
|
#define __NEED_size_t
|
|
#define __NEED_wchar_t
|
|
#if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L
|
|
#define __NEED_max_align_t
|
|
#endif
|
|
|
|
#include <bits/alltypes.h>
|
|
|
|
#if __GNUC__ > 3
|
|
#define offsetof(type, member) __builtin_offsetof(type, member)
|
|
#else
|
|
#define offsetof(type, member) ((size_t)( (char *)&(((type *)0)->member) - (char *)0 ))
|
|
#endif
|
|
|
|
#endif
|