[PATCH v2] sys/features.h: Define _ISOC2Y_SOURCE and __ISO_C_VISIBLE

Lenard Mollenkopf <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
Add feature test for C2Y code. Add matching definitions
_ISOC2Y_SOURCE for requesting sources and __ISO_C_VISIBLE
to be used in headers.

Signed-off-by: Lenard Mollenkopf <[email protected]>
---
Hi All, hi Corinna,
by now glibc supports _ISOC2Y_SOURCE. I now use __STDC_VERSION__ > 202311L,
as the previous >= 202400L is not standardized.

I am unsure what you, Corinna, ment by _GNU_SOURCE should result 
in _ISOC2Y_SOURCE being defined as well. This is done further up and
also works when tested.

 newlib/libc/include/sys/features.h | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/newlib/libc/include/sys/features.h b/newlib/libc/include/sys/features.h
index 325acdf5f..60f062a1c 100644
--- a/newlib/libc/include/sys/features.h
+++ b/newlib/libc/include/sys/features.h
@@ -93,6 +93,9 @@ extern "C" {
  * _ISOC23_SOURCE or _ISOC2X_SOURCE or gcc -std=c23 or g++ -std=c++20
  *	ISO C23
  *
+ * _ISOC2y_SOURCE or gcc -std=c2y or g++ -std=c++26
+ *	ISO C2y
+ *
  * _ATFILE_SOURCE (implied by _POSIX_C_SOURCE >= 200809L)
  *	"at" functions
  *
@@ -129,6 +132,8 @@ extern "C" {
 #define	_ISOC11_SOURCE		1
 #undef _ISOC23_SOURCE
 #define	_ISOC23_SOURCE		1
+#undef _ISOC2Y_SOURCE
+#define	_ISOC2Y_SOURCE		1
 #undef _POSIX_SOURCE
 #define	_POSIX_SOURCE		1
 #undef _POSIX_C_SOURCE
@@ -239,6 +244,11 @@ extern "C" {
  *	g++ -std=c++20 or newer, or with
  *	_ISOC23_SOURCE or _ISOC2x_SOURCE.
  *
+ * __ISO_C_VISIBLE >= 2024
+ *	ISO C2y; enabled with gcc -std=c2y or newer,
+ *	g++ -std=c++26 or newer, or with
+ *	_ISOC2y_SOURCE.
+ *
  * __ATFILE_VISIBLE
  *	"at" functions; enabled by default, with _ATFILE_SOURCE,
  *	_POSIX_C_SOURCE >= 200809L, or _XOPEN_SOURCE >= 700.
@@ -285,7 +295,10 @@ extern "C" {
 #define	__GNU_VISIBLE		0
 #endif
 
-#if defined(_ISOC23_SOURCE) || \
+#if defined(_ISOC2Y_SOURCE) || \
+  (__STDC_VERSION__ - 0) > 202311L || (__cplusplus - 0) > 202002
+#define __ISO_C_VISIBLE		2024
+#elif defined(_ISOC23_SOURCE) || \
   (__STDC_VERSION__ - 0) > 201710L || (__cplusplus - 0) >= 202002L
 #define __ISO_C_VISIBLE		2020
 #elif defined(_ISOC11_SOURCE) || \
-- 
2.49.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.