On 2026-04-28 16:30, Bruno Haible wrote:
Once this is fixed (via <stddef.h>), a similar error occurs because of
uint_least8_t, uint_least16_t, uint_least32_t.
Thanks for fixing that. I see a way to avoid including <stdint.h> in
some of the resulting circumstances. The idea is that Gnulib <stdbit.h>
needn't (and probably shouldn't) define types like uint_least8_t unless
some other module like stdc_memreverse8u uses them in its API. I
installed the attached to do that.From 4f8b6a1c1f243c21302a9436cb33a0179c75f5a4 Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email protected]>
Date: Wed, 29 Apr 2026 13:58:50 -0700
Subject: [PATCH] stdbit-h: include <stdint.h> only on module req
This is another attempt to tighten up the <stdbit.h> namespace
on GNU platforms, and follows up on previous C++ fixes here.
* lib/stdbit.in.h: Include <stdint.h> only when also using a
module like stdc_memreverse8 with an API that uses <stdint.h>
types that are not otherwise defined.
This should work better with portable code, as code that merely
wants u?int(_least)?N_t should include <stdint.h>, not <stdbit.h>.
(_GL_STDBIT_UINT_FAST16 _GL_STDBIT_UINT_FAST32)
(_GL_STDBIT_UINT_FAST64): Simplify logic by defining them to the
<stdint.h> equivalents whenever stdint.h is included.
---
ChangeLog | 14 ++++++++++++++
lib/stdbit.in.h | 33 ++++++++++++++++-----------------
2 files changed, 30 insertions(+), 17 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 824928bc39..6033ba8259 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2026-04-29 Paul Eggert <[email protected]>
+
+ stdbit-h: include <stdint.h> only on module req
+ This is another attempt to tighten up the <stdbit.h> namespace
+ on GNU platforms, and follows up on previous C++ fixes here.
+ * lib/stdbit.in.h: Include <stdint.h> only when also using a
+ module like stdc_memreverse8 with an API that uses <stdint.h>
+ types that are not otherwise defined.
+ This should work better with portable code, as code that merely
+ wants u?int(_least)?N_t should include <stdint.h>, not <stdbit.h>.
+ (_GL_STDBIT_UINT_FAST16 _GL_STDBIT_UINT_FAST32)
+ (_GL_STDBIT_UINT_FAST64): Simplify logic by defining them to the
+ <stdint.h> equivalents whenever stdint.h is included.
+
2026-04-29 Bruno Haible <[email protected]>
mbrtoc32-regular: Strengthen the configure test.
diff --git a/lib/stdbit.in.h b/lib/stdbit.in.h
index d6fb854a57..6be873260a 100644
--- a/lib/stdbit.in.h
+++ b/lib/stdbit.in.h
@@ -43,24 +43,23 @@
# include <stddef.h>
#endif
-#if (!(@HAVE_STDBIT_H@ && defined __UINT_FAST64_TYPE__) \
- || @GNULIB_STDC_MEMREVERSE8U@ \
+/* If needed for APIs, get intN_t, uintN_t, int_leastN_t,
+ uint_leastN_t, and (for internal use) get equivalents of
+ uint_fast{16,32,64}_t. Avoid namespace pollution on GNU. */
+#if (@GNULIB_STDC_MEMREVERSE8U@ \
|| @GNULIB_STDC_LOAD8@ || @GNULIB_STDC_LOAD8_ALIGNED@ \
- || @GNULIB_STDC_STORE8@ || @GNULIB_STDC_STORE8_ALIGNED@ \
- || (defined __cplusplus && defined __INTEL_CLANG_COMPILER))
-/* Get intN_t, uintN_t, int_leastN_t, uint_leastN_t. */
-# include <stdint.h>
-#endif
-
-/* uint_fast{16,32,64}_t equivalents, sans namespace pollution on GNU. */
-#if @HAVE_STDBIT_H@ && defined __UINT_FAST64_TYPE__
-# define _GL_STDBIT_UINT_FAST16 __UINT_FAST16_TYPE__
-# define _GL_STDBIT_UINT_FAST32 __UINT_FAST32_TYPE__
-# define _GL_STDBIT_UINT_FAST64 __UINT_FAST64_TYPE__
-#else
-# define _GL_STDBIT_UINT_FAST16 uint_fast16_t
-# define _GL_STDBIT_UINT_FAST32 uint_fast32_t
-# define _GL_STDBIT_UINT_FAST64 uint_fast64_t
+ || @GNULIB_STDC_STORE8@ || @GNULIB_STDC_STORE8_ALIGNED@)
+# if (!(@HAVE_STDBIT_H@ && defined __UINT_FAST64_TYPE__) \
+ || (defined __cplusplus && defined __INTEL_CLANG_COMPILER))
+# include <stdint.h>
+# define _GL_STDBIT_UINT_FAST16 uint_fast16_t
+# define _GL_STDBIT_UINT_FAST32 uint_fast32_t
+# define _GL_STDBIT_UINT_FAST64 uint_fast64_t
+# else
+# define _GL_STDBIT_UINT_FAST16 __UINT_FAST16_TYPE__
+# define _GL_STDBIT_UINT_FAST32 __UINT_FAST32_TYPE__
+# define _GL_STDBIT_UINT_FAST64 __UINT_FAST64_TYPE__
+# endif
#endif
#if @GNULIB_STDC_MEMREVERSE8U@ || @GNULIB_STDC_LOAD8_ALIGNED@ || @GNULIB_STDC_STORE8_ALIGNED@
--
2.54.0