C23

C23  är det inofficiella namnet på nästa (efter C17 ) standard för C- språket . [1] [2] Den förväntas antas 2023 och kommer därför att kallas C23 . [3]

Förändringar sedan C17 [4]

Språkändringar

Utfasade och borttagna funktioner
  • Arkitekturen måste nödvändigtvis stödja tvås komplementnummer .
  • K&R -stilfunktionsdefinitioner
  • Definition av dessa makron i < math.h > (flyttad ut till < limits.h >)
    • OÄNDLIGHET
    • DEC_INFINITY
    • NAN
    • DEC_NAN
  • No_return attribut
  • Stöd anropa realloc med 0 dimensioner (nu odefinierat beteende ).
  • Makro __bool_true_false_are_defined
  • Makro __alignof_is_defined och __alignas_is_defined
Innovationer Nya förbehandlare direktiv
  • #bädda in
  • #elifdef och #elifndef
  • #varning
  • Stöd för ISO/IEC 60559:2020, den nuvarande versionen av IEEE 754-standarden för aritmetik med flyttal
  • Typerna är _Decimal 32, _Decimal64 och _Decimal128.
  • _Static_assert stöd
  • C++11 stilfunktionsattribut :

nodiscard

maybe_unused

deprecated

fallthrough

noreturn

reproducerbar

unsequenced

  • Förbättrad aritmetik över binära och decimala tal
  • Etiketter kan förekomma före deklarationer och i slutet av uttryck
  • Namngivna parametrar i funktionsdeklarationer [5]
  • Binära bokstaver som0b10101010
  • Förbättrat konststöd med arrayer [6]
  • Möjlighet att kontrollera heltalsspill
  • Типы _BitInt(N)ochUnsignedBitInt(N)
  • Sifferavgränsare: 0xFF'FF'FF'FF
  • Operatörsstandardisering typeof(...)( typ av ) [7]
  • Tom initiering med {} (inklusive VLA-initiering)
  • alignas, alignof, bool, true, false, static_assert, thread_local är nu nyckelord
  • pragma för avrundning av riktning
    • FENV_ROUND
    • FENV_DEC_ROUND

Ändringar av standardbiblioteket

Nya rubrikfiler
  • stdbit.h
  • stdckdint.h
  • Vissa POSIX-funktioner blir standard
    • memccpy()
    • strdup()
    • strndup()
    • asctime_r()
    • ctime_r()
    • gmtime_r()
    • localtime_r()
  • UTF8-stöd
    • aliaschar8_t
    • mbrtoc8()
    • c8rtomb()
    • aliasatomic_char8_t
    • makroATOMIC_CHAR8_T_LOCK_FREE
  • Tillägg för fscanf, fprintf
    • Specifierare %bför utmatning av binära tal
    • H,D,DD för _Decimal32, _Decimal64 respektive _Decimal128.

Support

Möjlighet Erbjudande nr. GCC Klang MSVC
_Static_assert 2265 9 9
Attribut 2554 tio 9
Decimal 2341 4,2*
Binära konstanter 2549 4.3

elva

2.9

9

19,0**
Taggar före tillkännagivande 2508 elva Delvis*
__har_c_attribut 2553 elva 9
Sifferavgränsare 2626 12 13 19**
#elifdef,

#elifndef

2645 12 13
K&R stil funktionsdeklaration 2432 tio femton
Namnlös funktionsparametrar 2480 elva elva

Anteckningar

  1. ↑ Historien om C. cppreference . Hämtad 27 april 2022. Arkiverad från originalet 24 oktober 2020.
  2. Keaton, David WG 14 N 2086 -- C2x Charter . www.open-std.org (19 september 2016). Hämtad 3 januari 2021. Arkiverad från originalet 14 februari 2021.
  3. Reviderad C23-schema WG 14 N 2759 . www.open-std.org . Hämtad 19 juni 2021. Arkiverad från originalet 24 juni 2021.
  4. C23 - cppreference.com . en.cppreference.com . Hämtad 10 juli 2022. Arkiverad från originalet 8 juni 2022.
  5. Förslag till C2x WG14 N2480 . www.open-std.org . Hämtad 27 april 2022. Arkiverad från originalet 20 januari 2022.
  6. C2x-förslag: WG14 N2607 . www.open-std.org . Hämtad 27 april 2022. Arkiverad från originalet 9 februari 2022.
  7. Meneide, JeanHeyd Not-So-Magic - typ av(...) i C (1 januari 2022). Hämtad 25 mars 2022. Arkiverad från originalet 8 mars 2022.

Länkar