#define _ASSERT_H 1
#include <features.h>
+#if __GLIBC_USE (ISOC23)
+# ifndef __STDC_VERSION_ASSERT_H__
+# define __STDC_VERSION_ASSERT_H__ 202311L
+# endif
+#endif
+
#if defined __cplusplus && __GNUC_PREREQ (2,95)
# define __ASSERT_VOID_CAST static_cast<void>
#else
/* The macros for _Bool are not defined by GCC's <limits.h> before GCC
11, or if _GNU_SOURCE is defined rather than enabling C23 support
- with -std. */
+ with -std; likewise for the version macro before GCC 13. */
#if __GLIBC_USE (ISOC23)
# ifndef BOOL_MAX
# define BOOL_MAX 1
# ifndef BOOL_WIDTH
# define BOOL_WIDTH 1
# endif
+# ifndef __STDC_VERSION_LIMITS_H__
+# define __STDC_VERSION_LIMITS_H__ 202311L
+# endif
#endif
#ifdef __USE_POSIX
__BEGIN_DECLS
+#if __GLIBC_USE (ISOC23)
+# define __STDC_VERSION_STDIO_H__ 202311L
+#endif
+
#define __need_size_t
#define __need_NULL
#include <stddef.h>
__BEGIN_DECLS
+#if __GLIBC_USE (ISOC23)
+# define __STDC_VERSION_COMPLEX_H__ 202311L
+#endif
+
/* We might need to add support for more compilers here. But since ISO
C99 is out hopefully all maintained compilers will soon provide the data
types `float complex' and `double complex'. */
__BEGIN_DECLS
+#if __GLIBC_USE (ISOC23)
+# define __STDC_VERSION_FENV_H__ 202311L
+#endif
+
/* Floating-point exception handling. */
/* Clear the supported exceptions represented by EXCEPTS. */
/* Gather machine dependent type support. */
#include <bits/floatn.h>
+#if __GLIBC_USE (ISOC23)
+# define __STDC_VERSION_MATH_H__ 202311L
+#endif
+
/* Value returned on overflow. With IEEE 754 floating point, this is
+Infinity, otherwise the largest representable positive value. */
#if __GNUC_PREREQ (3, 3)
#include <math.h>
#include <complex.h>
+#if __GLIBC_USE (ISOC23)
+# define __STDC_VERSION_TGMATH_H__ 202311L
+#endif
+
/* There are two variant implementations of type-generic macros in
this file: one for GCC 8 and later, using __builtin_tgmath and
__BEGIN_DECLS
+#if __GLIBC_USE (ISOC23)
+# define __STDC_VERSION_SETJMP_H__ 202311L
+#endif
+
#include <bits/setjmp.h> /* Get `__jmp_buf'. */
#include <bits/types/struct___jmp_buf_tag.h>
#define _INTTYPES_H 1
#include <features.h>
+
+#if __GLIBC_USE (ISOC23)
+# define __STDC_VERSION_INTTYPES_H__ 202311L
+#endif
+
/* Get the type definitions. */
#include <stdint.h>
#include <bits/wchar.h>
#include <bits/wordsize.h>
+#if __GLIBC_USE (ISOC23)
+# define __STDC_VERSION_STDINT_H__ 202311L
+#endif
+
/* Exact integral types. */
/* Signed. */
#define _STDLIB_H 1
+#if __GLIBC_USE (ISOC23)
+# define __STDC_VERSION_STDLIB_H__ 202311L
+#endif
+
#if (defined __USE_XOPEN || defined __USE_XOPEN2K8) && !defined _SYS_WAIT_H
/* XPG requires a few symbols from <sys/wait.h> being defined. */
# include <bits/waitflags.h>
__BEGIN_DECLS
+#if __GLIBC_USE (ISOC23)
+# define __STDC_VERSION_STRING_H__ 202311L
+#endif
+
/* Get size_t and NULL from <stddef.h>. */
#define __need_size_t
#define __need_NULL
#define __need_NULL
#include <stddef.h>
+#if __GLIBC_USE (ISOC23)
+# define __STDC_VERSION_TIME_H__ 202311L
+#endif
+
/* This defines CLOCKS_PER_SEC, which is the number of processor clock
ticks per second, and possibly a number of other constants. */
#include <bits/time.h>
#include <bits/types.h>
#include <bits/types/mbstate_t.h>
+#if __GLIBC_USE (ISOC23)
+# define __STDC_VERSION_UCHAR_H__ 202311L
+#endif
+
/* Declare the C23 char8_t typedef in C23 modes, but only if the C++
__cpp_char8_t feature test macro is not defined. */
#if __GLIBC_USE (ISOC23) && !defined __cpp_char8_t
# include <bits/types/locale_t.h>
#endif
+#if __GLIBC_USE (ISOC23)
+# define __STDC_VERSION_WCHAR_H__ 202311L
+#endif
+
/* Tell the caller that we provide correct C++ prototypes. */
#if defined __cplusplus && __GNUC_PREREQ (4, 4)
# define __CORRECT_ISO_CPP_WCHAR_H_PROTO