[newlib-cygwin/main] Cygwin: winsup/cygwin/include/limits.h: Add C23 ..._WIDTH definitions
Corinna Vinschen
corinna@sourceware.org
Thu Apr 9 17:35:26 GMT 2026
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=41ac0e8c7775fc437ab44d03125c3d4b5f7772c3
commit 41ac0e8c7775fc437ab44d03125c3d4b5f7772c3
Author: Joel Sherrill <joel@rtems.org>
AuthorDate: Wed Apr 8 10:19:02 2026 -0500
Commit: Corinna Vinschen <corinna@vinschen.de>
CommitDate: Thu Apr 9 12:37:51 2026 +0200
Cygwin: winsup/cygwin/include/limits.h: Add C23 ..._WIDTH definitions
C23 adds the following constants to reflect the bit width of various
types: CHAR_WIDTH, SCHAR_WIDTH, UCHAR_WIDTH, SHRT_WIDTH, USHRT_WIDTH,
INT_WIDTH, UINT_WIDTH, LONG_WIDTH, ULONG_WIDTH, LLONG_WIDTH, and
ULLONG_WIDTH.
Diff:
---
winsup/cygwin/include/limits.h | 56 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
diff --git a/winsup/cygwin/include/limits.h b/winsup/cygwin/include/limits.h
index 28b7527f5180..8cb02c84d6ce 100644
--- a/winsup/cygwin/include/limits.h
+++ b/winsup/cygwin/include/limits.h
@@ -47,10 +47,20 @@ details. */
#undef SCHAR_MAX
#define SCHAR_MAX 127
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >= 2023
+#undef SCHAR_WIDTH
+#define SCHAR_WIDTH __SCHAR_WIDTH__
+#endif
+
/* Maximum value an `unsigned char' can hold. (Minimum is 0). */
#undef UCHAR_MAX
#define UCHAR_MAX 255
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >= 2023
+#undef UCHAR_WIDTH
+#define UCHAR_WIDTH __SCHAR_WIDTH__
+#endif
+
/* Minimum and maximum values a `char' can hold. */
#ifdef __CHAR_UNSIGNED__
#undef CHAR_MIN
@@ -64,16 +74,31 @@ details. */
#define CHAR_MAX 127
#endif
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >= 2023
+#undef CHAR_WIDTH
+#define CHAR_WIDTH __SCHAR_WIDTH__
+#endif
+
/* Minimum and maximum values a `signed short int' can hold. */
#undef SHRT_MIN
#define SHRT_MIN (-32768)
#undef SHRT_MAX
#define SHRT_MAX 32767
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >= 2023
+#undef SHRT_WIDTH
+#define SHRT_WIDTH __SHRT_WIDTH__
+#endif
+
/* Maximum value an `unsigned short int' can hold. (Minimum is 0). */
#undef USHRT_MAX
#define USHRT_MAX 65535
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >= 2023
+#undef USHRT_WIDTH
+#define USHRT_WIDTH __SHRT_WIDTH__
+#endif
+
/* Minimum and maximum values a `signed int' can hold. */
#ifndef __INT_MAX__
#define __INT_MAX__ 2147483647
@@ -83,10 +108,20 @@ details. */
#undef INT_MAX
#define INT_MAX __INT_MAX__
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >= 2023
+#undef INT_WIDTH
+#define INT_WIDTH __INT_WIDTH__
+#endif
+
/* Maximum value an `unsigned int' can hold. (Minimum is 0). */
#undef UINT_MAX
#define UINT_MAX (INT_MAX * 2U + 1)
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >= 2023
+#undef UINT_WIDTH
+#define UINT_WIDTH __INT_WIDTH__
+#endif
+
/* Minimum and maximum values a `signed long int' can hold.
(Same as `int'). */
#ifndef __LONG_MAX__
@@ -97,10 +132,21 @@ details. */
#undef LONG_MAX
#define LONG_MAX __LONG_MAX__
+
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >= 2023
+#undef LONG_WIDTH
+#define LONG_WIDTH __LONG_WIDTH__
+#endif
+
/* Maximum value an `unsigned long int' can hold. (Minimum is 0). */
#undef ULONG_MAX
#define ULONG_MAX (LONG_MAX * 2UL + 1)
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >= 2023
+#undef ULONG_WIDTH
+#define ULONG_WIDTH __LONG_WIDTH__
+#endif
+
/* Minimum and maximum values a `signed long long int' can hold. */
#ifndef __LONG_LONG_MAX__
#define __LONG_LONG_MAX__ 9223372036854775807LL
@@ -124,11 +170,21 @@ details. */
#undef LLONG_MAX
#define LLONG_MAX __LONG_LONG_MAX__
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >= 2023
+#undef LLONG_WIDTH
+#define LLONG_WIDTH __LONG_LONG_WIDTH__
+#endif
+
/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */
#undef ULLONG_MAX
#define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
#endif /* __ISO_C_VISIBLE >= 1999 */
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >= 2023
+#undef ULLONG_WIDTH
+#define ULLONG_WIDTH __LONG_LONG_WIDTH__
+#endif
+
/* Maximum size of ssize_t. Sadly, gcc doesn't give us __SSIZE_MAX__
the way it does for __SIZE_MAX__. On the other hand, we happen to
know that for Cygwin, ssize_t is 'long' and this particular header
More information about the Cygwin-cvs
mailing list