sys/features.h: Define _ISOC2X_SOURCE and __ISO_C_VISIBLE

Add feature test for C2X code. Add matching definitions
_ISOC2X_SOURCE for requesting sources and __ISO_C_VISIBLE
to be used in headers.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2023-08-02 16:52:27 +02:00
parent 8fbbc668a0
commit 290b56a879
1 changed files with 14 additions and 1 deletions

View File

@ -87,6 +87,9 @@ extern "C" {
* _ISOC11_SOURCE or gcc -std=c11 or g++ -std=c++11
* ISO C11
*
* _ISOC2x_SOURCE or gcc -std=c2x or g++ -std=c++20
* ISO C11
*
* _ATFILE_SOURCE (implied by _POSIX_C_SOURCE >= 200809L)
* "at" functions
*
@ -114,6 +117,8 @@ extern "C" {
#define _ISOC99_SOURCE 1
#undef _ISOC11_SOURCE
#define _ISOC11_SOURCE 1
#undef _ISOC2X_SOURCE
#define _ISOC2X_SOURCE 1
#undef _POSIX_SOURCE
#define _POSIX_SOURCE 1
#undef _POSIX_C_SOURCE
@ -215,6 +220,11 @@ extern "C" {
* g++ -std=c++11 or newer (on by default since GCC 6), or with
* _ISOC11_SOURCE.
*
* __ISO_C_VISIBLE >= 2020
* ISO C2x; enabled with gcc -std=c2x or newer,
* g++ -std=c++20 or newer, or with
* _ISOC2X_SOURCE.
*
* __ATFILE_VISIBLE
* "at" functions; enabled by default, with _ATFILE_SOURCE,
* _POSIX_C_SOURCE >= 200809L, or _XOPEN_SOURCE >= 700.
@ -261,7 +271,10 @@ extern "C" {
#define __GNU_VISIBLE 0
#endif
#if defined(_ISOC11_SOURCE) || \
#if defined(_ISOC2X_SOURCE) || \
(__STDC_VERSION__ - 0) > 201710L || (__cplusplus - 0) >= 202002L
#define __ISO_C_VISIBLE 2020
#elif defined(_ISOC11_SOURCE) || \
(__STDC_VERSION__ - 0) >= 201112L || (__cplusplus - 0) >= 201103L
#define __ISO_C_VISIBLE 2011
#elif defined(_ISOC99_SOURCE) || (_POSIX_C_SOURCE - 0) >= 200112L || \