C23

C23  je neoficiální název dalšího (po C17 ) standardu jazyka C . [1] [2] Očekává se, že bude přijata v roce 2023, a proto se bude nazývat C23 . [3]

Změny od C17 [4]

Změny jazyka

Zastaralé a odstraněné funkce
  • Architektura musí nutně podporovat čísla dvojkového doplňku .
  • Definice funkcí stylu K&R
  • Definice těchto maker v < math.h > (přesunuto do < limits.h >)
    • NEKONEČNO
    • DEC_INFINITY
    • NAN
    • DEC_NAN
  • Atribut No_return
  • Podpora volání realloc s 0 dimenzemi (nyní nedefinované chování ).
  • Makro __bool_true_false_are_defined
  • Makro __alignof_is_defined a __alignas_is_defined
Inovace Nové direktivy preprocesoru
  • #vložit
  • #elifdef a #elifndef
  • #Varování
  • Podpora ISO/IEC 60559:2020, aktuální verze standardu IEEE 754 pro aritmetiku s plovoucí desetinnou čárkou
  • Typy jsou _Decimal 32, _Decimal64 a _Decimal128.
  • Podpora _Static_assert
  • Atributy funkce stylu C++11 :

nodiscard

maybe_unused

deprecated

fallthrough

noreturn

reprodukovatelné

unsequenced

  • Vylepšená aritmetika nad binárními a desetinnými čísly
  • Štítky se mohou objevit před deklaracemi a na konci výrazů
  • Nepojmenované parametry v deklaracích funkcí [5]
  • Binární literály jako0b10101010
  • Vylepšená podpora const s poli [6]
  • Schopnost ovládat přetečení celého čísla
  • Типы _BitInt(N)aUnsignedBitInt(N)
  • Oddělovače číslic: 0xFF'FF'FF'FF
  • Standardizace operátora typeof(...)( typeof ) [7]
  • Prázdná inicializace s {} (včetně inicializace VLA)
  • alignas, alignof, bool, true, false, static_assert, thread_local jsou nyní klíčová slova
  • pragma pro směr zaoblení
    • FENV_ROUND
    • FENV_DEC_ROUND

Změny ve standardní knihovně

Nové hlavičkové soubory
  • stdbit.h
  • stdckdint.h
  • Některé funkce POSIX se stávají standardem
    • memccpy()
    • strdup()
    • strndup()
    • asctime_r()
    • ctime_r()
    • gmtime_r()
    • localtime_r()
  • podpora UTF8
    • pseudonymchar8_t
    • mbrtoc8()
    • c8rtomb()
    • pseudonymatomic_char8_t
    • makroATOMIC_CHAR8_T_LOCK_FREE
  • Rozšíření pro fscanf, fprintf
    • Specifikátor %bpro výstup binárních čísel
    • H,D,DD pro _Decimal32, _Decimal64 a _Decimal128.

Podpora

Možnost Nabídka č. GCC Zvonit MSVC
_Static_assert 2265 9 9
Atributy 2554 deset 9
Desetinný 2341 4,2*
Binární konstanty 2549 4.3

jedenáct

2.9

9

19,0**
Tagy před oznámením 2508 jedenáct Částečně*
__has_c_attribute 2553 jedenáct 9
Oddělovače číslic 2626 12 13 19**
#elifdef,

#elifndef

2645 12 13
Deklarace funkce stylu K&R 2432 deset patnáct
Nepojmenované funkční parametry 2480 jedenáct jedenáct

Poznámky

  1. Historie C. cppreference . Získáno 27. dubna 2022. Archivováno z originálu dne 24. října 2020.
  2. Keaton, David WG 14 N 2086 -- Charta C2x . www.open-std.org (19. září 2016). Získáno 3. ledna 2021. Archivováno z originálu dne 14. února 2021.
  3. Revidovaný plán C23 WG 14 N 2759 . www.open-std.org . Získáno 19. června 2021. Archivováno z originálu dne 24. června 2021.
  4. C23 - cppreference.com . en.cppreference.com . Získáno 10. července 2022. Archivováno z originálu dne 8. června 2022.
  5. Návrh na C2x WG14 N2480 . www.open-std.org . Získáno 27. dubna 2022. Archivováno z originálu dne 20. ledna 2022.
  6. Návrh C2x: WG14 N2607 . www.open-std.org . Získáno 27. dubna 2022. Archivováno z originálu dne 9. února 2022.
  7. Meneide, JeanHeyd Not-So-Magic - typeof(…) v C (1. ledna 2022). Získáno 25. března 2022. Archivováno z originálu dne 8. března 2022.

Odkazy