C23 on C-kielen ISO-standardiversio ISO/IEC 9899:2024, joka julkaistiin lokakuussa 2024. Valmistumista odotettiin vuonna 2023, jolloin sen nimeksi olisi tullut C23 (epävirallisesti nimellä C2x).[1][2][3][4]
C23 korvaa aiemman standardin C18.
Ehdotetut ominaisuudet jäädytettiin lokakuussa 2021 äänestämistä varten.[5][6] Muutoksia standardissa ovat muun muassa:[7]
- vanhan tyylisten esittelyjen ja määrittelyjen poisto (ilman prototyyppiä)[8]
- muiden kuin kahden komplementtimuotojen käyttö etumerkillisistä kokonaisluvuista poistuu (yhden komplementti)
- desimaaliset liukuluvut (DECFP) finanssimatematiikan käyttöön[9]
u8
merkkivakiot[10]
- esimerkiksi syntaksilla
u8'a'
joka vastaa a
-kirjainta Unicodena
- tyhjä alustus
= {}
[11]
nullptr
vakio[12]
true
ja false
avainsanoiksi[13]
- trigraph-tuen (kolmen merkin esitysmuodot) poistuminen: kolmen merkin esitysmuoto tulkitaan yhdeksi merkiksi, joka on yleensä virhetilanne eikä ohjelmoijan aikomus.[14] Trigraph-sarjat esiteltiin C89-standardissa vaihtoehtoisena esityksenä tietyille merkeille, joita käytetty merkistö ei tukenut. Trigraph-jakso alkaa merkeillä
??
ja tulkitaan invarianteiksi: # [ ] { } \ | ~ ^
.[15]
- ↑ WG 14 Document Log open-std.org. Viitattu 11.3.2020. (englanniksi)
- ↑ Revised C23 Schedule (PDF) open-std.org. Viitattu 26.2.2022. (englanniksi)
- ↑ Updated C23 Schedule (PDF) open-std.org. Viitattu 6.3.2024. (englanniksi)
- ↑ ISO/IEC 9899:2024 iso.org. Viitattu 31.1.2025. (englanniksi)
- ↑ Jens Gustedt: Feature freeze for C23 gustedt.wordpress.com. 16.10.2021. Viitattu 21.11.2022. (englanniksi)
- ↑ WG 14 Document Log open-std.org. Viitattu 21.11.2022. (englanniksi)
- ↑ C23 en.cppreference.com. Viitattu 21.11.2022. (englanniksi)
- ↑ Remove support for function definitions with identifier lists (PDF) open-std.org. Viitattu 21.11.2022. (englanniksi)
- ↑ Decimal floating-point arithmetic (PDF) open-std.org. Viitattu 21.11.2022. (englanniksi)
- ↑ Adding the u8 character prefix (PDF) open-std.org. Viitattu 21.11.2022. (englanniksi)
- ↑ Consistent, Warningless, and Intuitive Initialization open-std.org. Viitattu 21.11.2022. (englanniksi)
- ↑ Introduce the nullptr constant open-std.org. Viitattu 21.11.2022. (englanniksi)
- ↑ Make false and true first-class language features (PDF) open-std.org. Viitattu 21.11.2022. (englanniksi)
- ↑ Removing trigraphs??! (PDF) open-std.org. Viitattu 8.3.2024. (englanniksi)
- ↑ Rationale for International Standard—Programming Languages—C (PDF) open-std.org. huhtikuu 2003. Viitattu 8.3.2024. (englanniksi)