#ifndef VLIBC_STDDEF_H #define VLIBC_STDDEF_H /* * vlibc — . * * Self-contained definitions of the common C types and macros (C23). Every * definition here is derived from compiler builtins, so this header never * borrows from a system header. * * The compatibility profile is exposed by include/vlibc/features.h; it is * included here so consumers always see the configured VLIBC_LEVEL. */ #include /* Integer type of the result of the sizeof operator. */ typedef __SIZE_TYPE__ size_t; /* Signed integer type of the difference of two pointers. */ typedef __PTRDIFF_TYPE__ ptrdiff_t; /* Wide character type; a C++ keyword there, so no redefinition. */ #ifndef __cplusplus typedef __WCHAR_TYPE__ wchar_t; #endif /* Type of the null pointer constant nullptr (C23); a C++ keyword there. */ #if !defined(__cplusplus) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L typedef typeof(nullptr) nullptr_t; #endif /* Null pointer constant. */ #define NULL ((void *)0) /* Offset in bytes of a member from the start of its enclosing object. */ #define offsetof(type, m) __builtin_offsetof(type, m) /* Mark the following point of the program as unreachable (C23). */ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L #define unreachable() __builtin_unreachable() #endif /* * An object type whose alignment is as great as that of any supported * fundamental type; suitable as the storage type for aligned allocation. */ typedef struct { long long vll; long double vld; } max_align_t; #endif /* VLIBC_STDDEF_H */