C23
From cppreference.net
<
c
ISO/IEC 9899:2024 , auch bekannt als C23 , ist die aktuelle Revision des C-Standards.
- Der neueste WD von C23 (n3149, 2023-07-09, ein passwortgeschütztes Zip-Archiv, siehe n3150 ).
- Der öffentlich zugängliche Entwurf, der C23 am nächsten kommt, ist der erste C2Y-Entwurf (n3220, 2024-02-22, der sich von C23 nur durch redaktionelle Änderungen unterscheidet, siehe n3221 ).
|
Dieser Abschnitt ist unvollständig
Grund: Akzeptierte Änderungen im endgültigen Entwurf enthalten |
C23 erhöht den vordefinierten Makro __STDC_VERSION__ auf 202311L .
Inhaltsverzeichnis |
Neue Sprachfunktionen
- Dezimale Gleitkommatypen ( _Decimal32 , _Decimal64 und _Decimal128 )
- Bitgenaue Ganzzahlen ( _BitInt )
- Binäre Ganzzahlkonstanten
-
u8Zeichenkonstanten -
Typänderung von
u8Zeichenkettenliteralen -
Zifferntrenner
' - Leerer Initialisierer = { }
-
Attribute
-
[[ deprecated ]] -
[[ fallthrough ]] -
[[ maybe_unused ]] -
[[ nodiscard ]] -
[[ noreturn ]] -
[[ reproducible ]] -
[[ unsequenced ]]
-
- Unbenannte Parameter in Funktionsdefinitionen
- Identische CVR-Qualifizierungen für Arraytypen und ihre Elementtypen
- Einzelargument- static_assert
- alignas und alignof werden zu Schlüsselwörtern (können aus Kompatibilitätsgründen vordefinierte Makros sein)
- static_assert wird zu einem Schlüsselwort (kann aus Kompatibilitätsgründen ein vordefiniertes Makro sein)
- thread_local wird zu einem Schlüsselwort (kann aus Kompatibilitätsgründen ein vordefiniertes Makro sein)
-
Sprungmarken
gefolgt von Deklarationen und
} - nullptr Konstante und der zugehörige nullptr_t Typ
- true und false werden zu Schlüsselwörtern (können aus Kompatibilitätsgründen vordefinierte Makros sein)
- Neue Präprozessor-Direktiven
-
Pragmas für Rundungsrichtung
-
STDCFENV_ROUND -
STDCFENV_DEC_ROUND
-
Feature-Test-Makros für optionale Funktionen
-
__STDC_IEC_60559_BFP__
- Zeigt an, dass IEEE-754-Binär-Gleitkommaarithmetik und erforderliche mathematische Funktionen unterstützt werden.
- Dieses Makro ersetzt __STDC_IEC_559__ .
-
__STDC_IEC_60559_DFP__
- Zeigt an, dass IEEE-754-Dezimal-Gleitkommaarithmetik und erforderliche mathematische Funktionen unterstützt werden.
-
__STDC_IEC_60559_COMPLEX__
- Zeigt an, dass IEEE-754-Komplexarithmetik und erforderliche mathematische Funktionen unterstützt werden.
- Dieses Makro ersetzt __STDC_IEC_559_COMPLEX__ .
Neue Bibliotheksfunktionen
Neue Header
Bibliotheksfunktionen
-
Erweiterte binäre Gleitkomma-Mathematikfunktionen
-
Dieser Abschnitt ist unvollständig
Grund: Liste steht noch aus
-
-
Dezimale Gleitkomma-Mathematikfunktionen
-
-
d NVarianten für bestehende und neue Gleitkomma-Mathematikfunktionen - quantized N ()
- samequantumd N ()
- quantumd N ()
- llquantexpd N ()
- encodedecd N ()
- decodedecd N ()
- encodebind N ()
- decodebind N ()
-
-
- Gleitkomma-Formatierungsfunktionen
-
Bibliotheksunterstützung für UTF-8
-
char8_tTypalias - mbrtoc8()
- c8rtomb()
- atomic_char8_t Typalias
- ATOMIC_CHAR8_T_LOCK_FREE Testmakro
-
- memset_explicit()
-
POSIX-Funktionen
- memccpy()
- strdup()
- strndup()
- gmtime_r()
- localtime_r()
- Erweiterungen für strftime() und wcsftime()
-
Erweiterungen für
fscanf()
und
fprintf()
Funktionsfamilien
-
w Nundwf NLängenmodifikatoren für [u]int N _t bzw. [u]int_fast N _t -
H,DundDDLängenmodifikatoren für _Decimal32 , _Decimal64 bzw. _Decimal128 -
bKonvertierungsspezifizierer für vorzeichenlose Ganzzahltypen
-
- timespec_getres()
- Makrokonstanten für die Breite von Ganzzahltypen
- Zusätzliche numerische Grenzwertmakros für Gleitkommatypen
- Bibliotheksversions-Testmakros
Veraltete Funktionen
Entfernte Funktionen
- Alte Funktionsdeklarationen und Funktionsdefinitionen
- Darstellungen für vorzeichenbehaftete Ganzzahlen außer Zweierkomplement
- Erlaubnis, dass u / U -präfixierte Zeichenkonstanten und Zeichenkettenliterale nicht UTF-16/32 sein müssen
- Gemischte Verkettung von breiten Zeichenkettenliteralen
- Unterstützung für Aufrufe von realloc() mit Null-Größe (das Verhalten wird undefiniert)
- alignas und alignof werden als Makros in <stdalign.h> bereitgestellt (werden zu Schlüsselwörtern)
- static_assert wird als Makro in <assert.h> bereitgestellt (wird zum Schlüsselwort)
- thread_local wird als Makro in <threads.h> bereitgestellt (wird zum Schlüsselwort)
Veraltete Funktionen
- <stdnoreturn.h>
- <stdalign.h>
- <stdbool.h>
- Alte Feature-Test-Makros
- _Noreturn Funktionsspezifizierer
- _Noreturn Attribut-Token
- asctime()
- ctime()
- DECIMAL_DIG (verwenden Sie stattdessen das entsprechende typspezifische Makro ( FLT_DECIMAL_DIG , etc))
- Definition der folgenden numerischen Grenzwertmakros in <math.h> (sie sollten über <float.h> verwendet werden)
- __bool_true_false_are_defined
Fehlerberichte
| Fehlerberichte behoben in C23 (? Fehler) |
|---|
Compiler-Unterstützung
C23-Kernsprachfunktionen
|
Dieser Abschnitt ist unvollständig
Grund: Status für Apple Clang und andere Compiler mit C2x-Unterstützung |
|
C23-Funktion
|
Dokument(e)
|
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|
| static_assert ohne Nachricht | N2265 | 9 | 9 | Ja | Ja | 6.5 | 2021.1.2 (clang based) | ||||
[[
nodiscard
]]
|
N2267 | 10 | 9 | Ja | 6.4 | 2021.1.2 (clang based) | |||||
[[
maybe_unused
]]
|
N2270 | 10 | 9 | Ja | 6.4 | 2021.1.2 (clang based) | |||||
[[
deprecated
]]
|
N2334 | 10 | 9 | Ja | 6.4 | 2021.1.2 (clang basiert) | |||||
| Attribute |
N2335
N2554 |
10 | 9 | Ja | 6.4 | 2021.1.2 (clang based) | |||||
| IEEE 754 Dezimal-Gleitkommatypen | N2341 |
4.2
(teilweise)*
12 |
13.0 (teilweise)* | ||||||||
[[
fallthrough
]]
|
N2408 | 10 | 9 | Ja | 6.4 | 2021.1.2 (clang basiert) | |||||
u8
Zeichenkonstanten
|
N2418 | 10 | 15 | 6.5 | 2022.2 | ||||||
| Entfernung von Funktionsdefinitionen ohne Prototyp | N2432 | 10 | 15 | 2022.2 | |||||||
[[
nodiscard
]]
mit Nachricht
|
N2448 | 11 | 10 | Ja | 6.4 | 2021.1.2 (clang based) | |||||
| Unbenannte Parameter in Funktionsdefinitionen | N2480 | 11 | 11 | Ja | 6.4 | 2021.1.2 (clang based) | |||||
| Labels vor Deklarationen und Ende von Blöcken | N2508 | 11 | 16 | Teilweise* | 6.5 | 17.0 * | |||||
| Binäre Ganzzahlkonstanten | N2549 |
4.3
*
11 |
2.9
*
9 |
19.0 (2015)* * | Ja | 6.5 | 11.0 * | ||||
| __has_c_attribute in Präprozessor-Bedingungen | N2553 | 11 | 9 | Ja | 6.5 | 2021.1.2 (clang based) | |||||
| Doppelte Attribute erlauben | N2557 | 11 | 13 | Ja | 6.5 | 2021.4 (clang-based | |||||
| IEEE 754 Austausch- und erweiterte Typen | N2601 |
7
(teilweise)*
14 |
6 (teilweise)* | Teilweise* | |||||||
| Zifferntrennzeichen | N2626 | 12 | 13 | 19.0 (2015)* * | Ja | 6.5 | 18.0 * | ||||
#elifdef
und
#elifndef
|
N2645 | 12 | 13 | 19.40* | 13.1.6* | 6.5 | 2021.4 | ||||
Typänderung von
u8
String-Literalen
|
N2653 | 13 | |||||||||
[[
maybe_unused
]]
für Labels
|
N2662 | 11 | 16 | 6.5 | 2022.2 | ||||||
| #warning | N2686 | Ja | Ja | Ja | 6.5 | Ja | |||||
| Bit-genaue Ganzzahltypen ( _BitInt ) | N2763 | 14 (teilweise)* | 15 | 6.5 | 2022.2 | ||||||
[[
noreturn
]]
|
N2764 | 13 | 15 | 6.5 | 2022.2 | ||||||
| Suffixe für bitgenaue Integer-Konstanten | N2775 | 14 | 15 | 2022.2 | |||||||
| __has_include in Präprozessor-Bedingungen | N2799 | 5 | Ja | 19.11* | Ja | 6.5 | 18.0 | ||||
| Bezeichnersyntax unter Verwendung des Unicode-Standard-Anhangs 31 | N2836 | 13 | 15 | 6.5 | 2022.2 | ||||||
| Entfernung von Funktionsdeklarationen ohne Prototyp | N2841 | 13 | 15 | 2022.2 | |||||||
| Leere Initialisierer | N2900 |
Teilweise*
13 |
Teilweise* | Teilweise* | Teilweise* | Teilweise* | |||||
| typeof und typeof_unqual |
N2927
N2930 |
Teilweise*
13 |
Teilweise*
16 |
19.39* | Teilweise* | Teilweise* | Teilweise* | Teilweise* | |||
| Neue Schreibweise von Schlüsselwörtern | N2934 | 13 | 16 | 6.5 | |||||||
| Vordefinierte true und false | N2935 | 13 | 15 | 2022.2 | |||||||
[[
unsequenced
]]
und
[[
reproducible
]]
|
N2956 | 15 | |||||||||
| Anforderungen für variadische Parameterliste lockern | N2975 | 13 | 16 | 6.5 | 2023.1 | ||||||
| Typrückschluss bei Objektdefinitionen | N3007 | 13 | 18 | ||||||||
| #embed | N3017 | 15 | 19 | ||||||||
| constexpr Objekte | N3018 | 13 | 19 | ||||||||
| Verbesserte Normale Aufzählungen | N3029 | 13 | 20 * | ||||||||
| Aufzählungen mit festgelegten zugrundeliegenden Typen | N3030 | 13 | 20 * | ||||||||
__VA_OPT__
|
N3033 |
8
13 |
12 | 19.39* | 6.5 | ||||||
| Speicherklassenspezifizierer für zusammengesetzte Literale | N3038 | 13 | |||||||||
| nullptr | N3042 | 13 | 16 | ||||||||
|
C23-Funktion |
Dokument(e) |
GCC
|
Clang
|
MSVC
|
Apple Clang
|
EDG eccp
|
Intel C++
|
Nvidia HPC C++ (ex PGI)*
|
Nvidia nvcc
|
Cray
|
C23-Bibliotheksfunktionen
|
Dieser Abschnitt ist unvollständig
Grund: eine separate Liste für C-Standardbibliotheken |