C23 (C standart revizyonu)
C23, C programlama dilinin açık standard taslağıdır ve ISO/IEC 9899:2024 olarak yayınlanması ve C17'nin (ISO/IEC 9899:2018)[1] yerini alması beklenmektedir. 2016'da gayriresmi olarak C2x[2] adıyla üzerinde çalışılmaya başlanmıştır ve Ekim 2024'te[3] yayınlanması beklenmektedir. C23'ün en son taslağı 1 Nisan 2023'te yayınlanmıştır ve genel erişime açıktır. WG14 (Working Group 14, 14. Çalışma Grubu) C2x taslağı için ilk olarak Ekim 2019[4] toplanmış, 2020'te COVID-19 pandemisi nedeniyle toplantılar sanal olarak uzaktan yapılmış, sonrasında telekonferans toplantıları 2024 boyunca devam etmiştir. Haziran 2024'teki açık standardta 'C23'ün bitiminden sonra, "C2y" olarak adlandırıldığı' belirtilmiştir.
C23 ile birlikte __STDC_VERSION__ ön tanımlı makrosunun değeri 201710L'ten, 202311L olarak değiştirilmiştir.
Özellikler
[değiştir | kaynağı değiştir]C23'ün en son çalışma taslağında değişiklikler aşağıda listelenmiştir.[5]
Standard Kütüphane
[değiştir | kaynağı değiştir]Yeni eklenen fonksiyonlar
[değiştir | kaynağı değiştir]- Optimizasyonlardan etkilenmeden bellekte saklanan hassas veriyi silen
memset_explicit()fonksiyonu<string.h>başlığına eklendi.[6] - POSIX ve SVID C uzantılarına benzer şekilde, belli bir baytla karşılaşılana kadar bellek kopyalayan
memccpy()fonksiyonu<string.h>başlığına eklendi.[7] - POSIX ve SVID C uzantılarına benzer şekilde, bir string'in kopyasını oluşturan
strdup()vestrndup()fonksiyonları<string.h>başlığına eklendi.[8] - İşaretçinin bellekte hizalanma (alignment) şeklini anlamak için
memalignment()fonksiyonu<stdlib.h>başlığına eklendi.[9] - Pek çok integer türü için bitlerle ilgili bilgi elde etmek amaçlı fonksiyon / macro ve türler
<stdbit.h>başlığına eklendi. Varolan kütüphanelerle isim çakışmasını önlemek için hepsistdc_şeklinde öneklendirildi.[10][11]- Aşağıdaki fonksiyonlarda
*karakteri,uc,us,ui,ul,ullolarak farkli integer türlerini ifade edecek şekilde 5 fonksiyon adını temsil etmektedir.*olmayacak şekilde jenerik (type-generic) makro olarak da kullanılabilir.[10] - Bir değerdeki 1 veya 0 bitlerini saymak için
stdc_count_ones*()vestdc_count_zeros*()eklendi.[10] - En çok değeri oluşturan bit'ten (MSB, most significant bit) itibaren, sırasıyla, yan yana 1 ve 0 sayılarını veren
stdc_leading_ones*()vestdc_leading_zeros*().[10] - En az değeri oluşturan bit'ten (LSB, most significant bit) itibaren, sırasıyla, sayının başından başlayıp 1 ve 0 bit'lerinin sayılarını veren
stdc_trailing_ones*()andstdc_trailing_zeros*().[10] - En çok değeri oluşturan bit'ten itibaren, sırasıyla, ilk 1 ve 0 bitlerinin pozisyonunu veren
stdc_first_leading_one*()vestdc_first_leading_zero*().[10] - En az değeri oluşturan bit'ten itibaren, sırasıyla, ilk 1 ve 0 bitlerinin pozisyonunu veren
stdc_first_trailing_one*()vestdc_first_trailing_zero*().[10] - Bir değerin 2'nin çarpanı olup olmadığına karar vermek için
stdc_has_single_bit*().[10] - Geçilen değerden büyük veya ona eşit olan 2'nin en büyük tam kuvvetini döndüren
stdc_bit_floor*().[10] - Geçilen değerden büyük veya ona eşit olan 2'nin en küçük tam kuvvetini döndüren
stdc_bit_ceil*().[10] - Bir değeri temsil etmek için gerekli bit sayısı için
stdc_bit_width*().[10]
- Aşağıdaki fonksiyonlarda
- glibc ve musl kütüphanelerinde bulunan ve verilen zamanı takvim zamanına dönüştüren
timegm()fonksiyonu<time.h>başlığına eklendi.[12]
Mevcut fonksiyonlara yapılan değişikler
[değiştir | kaynağı değiştir]- Binary'e (2 tabanında sayıya) dönüşüm belirteci olan
%b,printf()fonksiyon ailesine eklendi.[13] - Binary dönüşüm belirteci olan
%b,scanf()fonksiyon ailesine eklendi.[13] 0bve0Bbinary dönüşüm desteğistrtol()vewcstol()fonksiyon ailesine eklendi.[13]bsearch(),bsearch_s(),memchr(),strchr(),strpbrk(),strrchr(),strstr()fonksiyonları ile bunların genişletilmiş karakter için olaran versiyonları olanwmemchr(),wcschr(),wcspbrk(),wcsrchr(),wcsstr()fonksiyonlarına eğer const nesneler geçildiyse, const nitelenmiş nesne döndürecek şekilde değiştirildi.[14]
Anahtar sözcükler
[değiştir | kaynağı değiştir]truevefalseanahtar sözcükleri eklendi.[15]alignas,alignof,bool,static_assertvethread_localanahtar sözcükleri eklendi. Daha önce tanımlanmış olan anahtar sözcükler, yenilerine alternatif olarak kullanılabilecek şekilde bırakıldı:_Alignas,_Alignof,_Bool,_Static_assert,_Thread_local.[16]_BitIntanahtar sözcüğü eklenditypeofvetypeof_unqualanahtar sözcükleri eklendinullptranahtar sözcüğü eklendiconstexpranahtar sözcüğü eklendi_Decimal32,_Decimal64,_Decimal128anahtar sözcükleri on tabanındaki kayan noktalı sayı aritmatiğinde isteğe bağlı kullanılabilecek şekilde eklendi
Önişlemci
[değiştir | kaynağı değiştir]#elif definedve#elif !defineddirektiflerine eşdeğer olan#elifdefve#elifndefdirektifleri[17] eklendi. Her iki direktif de önceden C++23 standardına ve GCC 12'de eklenmişti.[18]- Binary kaynak (resource) include etmeye yarayan
#embeddirektifi ile bu kaynağın erişilebilir olup olmadığını önişlemci direktifiyle sorgulamaya yarayan__has_embedeklendi.[19] - Derlemede uyarı mesajı vermeye yarayan
#warningeklendi.[20] - Bir başlık dosyasının ulaşılabilir olup olmadığını önişlemci direktifiyle kontrol etmeye yarayan
__has_includeeklendi.[21] - Bir özniteliğin (attribute) ulaşılabilir olup olmadığını önişlemci direktifiyle kontrol etmeye yarayan
__has_c_attributeeklendi.[22] - Bir makroya yalnızca değişebilen sayıda (variadic) argüman geçildiğinde genişleyen ve variadic makrolar oluşturmaya yarayan
__VA_OPT__fonksiyonel makrosu eklendi.[23]
Tipler
[değiştir | kaynağı değiştir]- Null pointer türü olan
nullptr_teklendi.[24] - Bit kesinlikli integer türleri olan
_BitInt(N)veunsigned _BitInt(N)eklendi. Maximum bit genişliğini verenBITINT_MAXWIDTHeklendi.[25][26] - Tam sayılar için kontrol edilmiş işlemler sağlayan
ckd_add(),ckd_sub(),ckd_mul()jenerik macrolar.[27] - Dizi türlerinin fonksiyona dizi boyu bilgisiyle geçilmesine izin verildi (Bu özellik yığın bellekte tahsis edilmiş otomatik saklama sürecinde barındırılan değişken boylu diziler (Variable-length array, VLA) için geçerli değildir).[28]
- Dizi türleri için daha iyi
constdesteği.[29] typeof(...)operatörü standardlaştırıldı.[30]autoanahtar sözcüğünün anlamı, tür belirleme yapabilecek şekilde geniştildi fakat barındırma sınıfı belirteci şeklindeki önceki anlamı auto bir tür ile birlikte kullanıldığında hala kullanılabilir olacak şekilde korundu. C++'tan farklı olarak C23 tür belirlemesi yalnızca nesne tanımları için geçerlidir, fonksiyon dönüş türü ve paramatresi olarak kullanılamaz.[31]- struct, union ve enum türlerinin tanımı ile birlikte yapılan nesne deklerasyonlarında (
struct S{ /*...*/ } s;gibi) farklı nesnelerin ayni dönüşüm biriminde (translation unit, TU) bulunmasına izin verildi.[32] - Belli bit genişliğindeki (
intN_tveuintN_tgibi) integer değerlerininintmax_t'nin değerini geçebilmesine izin verildi.(N2888).[33]
Sabitler
[değiştir | kaynağı değiştir]nullptr_ttürünün bir sabiti olannullptreklendi,[24]_BitInt(N)veunsigned _BitInt(N)türleri içinwbveuwbinteger literal sonekleri eklendi,[34]- Binary sayı sabiti için
0bile0Bönekleri eklendi,[35] - Sayılarda basamak ayracı olarak kullanılabilen
'eklendi,[36] enumtürlerinin temsil ettiği sabitler için ifade ettiği değerlerin türünü belirleme özelliği getirildi,[37]- Tuttuğu integer türü belirtilmemiş
enumtürleri içinintifade edilemeyen değerlere (INT_MAX'tan büyük ve INT_MIN'den küçük) izin verildi.[38]
Sözdizim
[değiştir | kaynağı değiştir]- Etiketlerin (label) bildirimlerden önce ve birleşik deyimlerin (compound statements) sonunda yapılabilmesine izin verildi.[39]
- Fonksiyon tanımlarında isimsiz parametrelere izin verildi.[40]
- VLA için de kullanılabilecek olan
{}kullanarak sıfır ilk değer ataması[41] - Değişken sayıda parametre alabilen (variadic) fonksiyonların
...(ellipsis)'den önce bir isimli argüman belirtilmesi şartı kaldırıldı.va_startmakrosu artık ikinci bir argumana sahip olmak zorunda veya varsa ilk argümandan sonraki argümanları işlemek (evaluate) zorunda değil.[42] - C++11'deki gibi
kullanan öznitelik (attribute) sözdizimi eklendi.[43] Ek olarak aşağıdaki öznitelikler eklendi: - C++17 ile uyumluluk amacıyla tek argümanlı
_Static_asserteklendi (assert.h).[45] - Bir argümana sahip olmayan fonksiyonların parametre listesinde
voidbelirtmesi gerekliliği kaldırıldı (void foo()şeklinde).
C++ ile uyumluluk
[değiştir | kaynağı değiştir]- Etiketlerin (label) bildirimlerden önce yapılabilemesi, isimsiz fonksiyon argümanları,
{}kullanarak sıfır ilk değer ataması, isimli bir argümana ihtiyaç duymayan değişiken sayıda argüman alabilen (variadic) fonksiyonlar, C++11'deki gibi öznitelik (attribute) sözdizimi,assert.h'ta tanımlanan_Static_assertgibi C++ ile uyumluluğu geliştirme amaçlı çeşitli sözdizimi değişikleri yapıldı. Etiketlerin (label) birleşik deyimlerin (compound statement) sonunda yapılabilmesi ilgili gerekli değişiklikler C++23'te yapıldı.[46] - C++-stili öznitelik sözdizimi desteği getirildi.[47]
[[deprecated]],[48][[fallthrough]],[49][[maybe unused]],[50][[nodiscard]],[51] ve[[noreturn]]öznitelikleri C++11 ile uyumluluk için eklendi, sonrasında C11 ile eklenen_Noreturn,noreturnile<stdnoreturn.h>deprecate edildi.[52] Öznitelik listesinde aynı özniteliğin birden fazla bulunmasına C++23 ile uyumluluk için izin verildi.[53] Tüm standard özniteliklerin ön ve sonuna çift altçizgi eklenerek kullanılabilmesine izin verildi (ör.[[deprecated]]ile[[deprecated]]aynı anlama sahip). - UTF-8 kodlamasını temsil etmek için karakter literallerine
u8önekinin getirilebilmesi C++17 ile uyumluluk için eklendi.[54][55] #elifdefve#elifndefönişlemci direktifleri C++23 ile uyumluluk için eklendi.[17]
Diğer özellikler
[değiştir | kaynağı değiştir]- Kayar noktalı (floating point) sayı aritmetiğinin mevcut versiyonu olan ISO/IEC 60559:2020 IEEE 754 standardı için genişletilmiş iki tabanında ve (isteğe bağlı olarak) on tabanında kayar noktalı aritmetik desteği.[56][57]
- Nesneler için
constexprbelirteci.constexprnesneler için getirirdi, fakat C++'taki anlamının aksine fonsiyonlar için kullanılabilir değil.[58] - UTF-8 ile kodlanmış (encode) veriyi tutmak için
char8_ttürü eklendi ve u8 karakter değişmezlerinin (constant) ve string literallerinin türüchar8_tolarak değiştirildi.[59] - Başka bir şekilde olması belirtilmediği takdirde, tüm
char16_tstring ve literal'lerin UTF-16 vechar32_tstring ve literallerinin UTF-32 olarak kodlanacağı (encode) açıkça belirtildi.[60] - Nesne barındırma belirteçlerinin birleşik deyim (compound statement) tanımlarında kullanılabilmesine izin verildi.[61]
Geçersiz kılınan özellikler
[değiştir | kaynağı değiştir]Bazı eski (obsolete) özellikler C23 çalışma taslağından kaldırıldı veya tavsiye edilmeyen olarak işaretlendi (deprecated).
- Digraf ve trigraf karakterler kaldırıldı.[62]
- Fonksiyon argümanları hakkında bilgi sağlamayan K&R fonksiyon tanım ve bildirimleri kaldırıldı.[63][64]
- İşaretli tam sayıların ifade edilişinde ikinin tümleyeni dışındaki tüm yöntemler kaldırıldı.[65]
- Geçerliliğini yitirmiş özellikler olan
*_HAS_SUBNORMmakroları<float.h>'tan kaldırıldı.[66]
Daha fazlası
[değiştir | kaynağı değiştir]- N3096 (Resmi C23 standardının basımından önceki son taslak); WG14; Nisan 2023. (free download)
- N3149 (C23 standardı üzerinde çalışılan taslak); WG14; July 2023. (not available to public)
- N3219 (ISO/IEC 9899:2023 DIS Draft); WG14; Şubat 2024. (ISO draft available but not free)
- ISO/IEC 9899:2024 (resmi C23 standardı); ISO; 2024. (2024'te yayınlanması planlanıyor)
- N3220 (first working draft after C23; differs from draft standard N3219 only in one footnote[67]); WG14; February 2024. (free download)
Kaynakça
[değiştir | kaynağı değiştir]- ^ "History of C". cppreference.com. 27 Haziran 2022. 19 Ekim 2022 tarihinde kaynağından arşivlendi.
- ^ "WG14-N2086: C2x Charter". open-std.org. 20 Eylül 2016. 22 Aralık 2022 tarihinde kaynağından arşivlendi.
- ^ On August 30, 2024 the standard reached ISO development stage "50.20 Proof sent to secretariat or FDIS ballot initiated: 8 weeks" and as of September 19, ISO lists it as having "Publication date : 2024-10". "ISO/IEC PRF 9899". iso.org. 19 Eylül 2024 tarihinde kaynağından arşivlendi. Erişim tarihi: 27 Eylül 2024.
- ^ "WG14-N2437: Agenda for October 2019". open-std.org. 21 Ekim 2019. 5 Mart 2021 tarihinde kaynağından arşivlendi.
- ^ "WG14-N3096: Draft for ISO/IEC 9899:2024" (PDF). open-std.org. 1 Nisan 2023. 2 Nisan 2023 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2897: memset_explicit()". open-std.org. 27 Aralık 2021. 25 Ekim 2022 tarihinde kaynağından arşivlendi.
- ^ "WG14-N2349: Toward more efficient string copying and concatenation". open-std.org. 18 Mart 2019. 30 Eylül 2022 tarihinde kaynağından arşivlendi.
- ^ "WG14-N2353: strdup() and strndup()". open-std.org. 18 Mart 2019. 24 Aralık 2022 tarihinde kaynağından arşivlendi.
- ^ "WG14-N2974: Queryable pointer alignment" (PDF). open-std.org. 15 Nisan 2022. 13 Ekim 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ a b c d e f g h i j k "WG14-N3022: Modern Bit Utilities". open-std.org. 6 Temmuz 2022. 24 Aralık 2022 tarihinde kaynağından arşivlendi.
- ^ "21 Bit Manipulation". 29 Eylül 2024.
- ^ "WG14-N2833: Add timegm() as non-optional part of time.h". open-std.org. 7 Ekim 2021. 1 Aralık 2021 tarihinde kaynağından arşivlendi.
- ^ a b c "WG14-N2630: formatted input/output of binary integer numbers" (PDF). open-std.org. 1 Ocak 2021. 14 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N3020: Qualifier-preserving standard library functions" (PDF). open-std.org. 13 Haziran 2022. 13 Ekim 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2935: Make false and true first-class language features" (PDF). open-std.org. 15 Şubat 2022. 21 Kasım 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2934: Revise spelling of keywords" (PDF). open-std.org. 15 Şubat 2022. 24 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ a b "WG14-N2645: Add support for preprocessing directives #elifdef and #elifndef" (PDF). open-std.org. 25 Ocak 2020. 28 Kasım 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "GCC 12 Adds Support For New #elifdef #elifndef Directives". phoronix. 12 Mayıs 2021. 27 Aralık 2022 tarihinde kaynağından arşivlendi.
- ^ "WG14-N3017: #embed - a scannable, tooling-friendly binary resource inclusion mechanism". open-std.org. 27 Haziran 2022. 24 Aralık 2022 tarihinde kaynağından arşivlendi.
- ^ "WG14-N2686: #warning" (PDF). open-std.org. 22 Temmuz 2022. 28 Kasım 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2799: __has_include for C" (PDF). open-std.org. 30 Ağustos 2021. 24 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2553: Querying attribute support" (PDF). open-std.org. 4 Ağustos 2020. 14 Ekim 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N3033: Comma omission and comma deletion". open-std.org. 20 Temmuz 2022. 27 Aralık 2022 tarihinde kaynağından arşivlendi.
- ^ a b "WR14-N3042: Introduce the nullptr constant". open-std.org. 22 Temmuz 2022. 24 Aralık 2022 tarihinde kaynağından arşivlendi.
- ^ "WG14-N2763: Adding a Fundamental Type for N-bit integers" (PDF). open-std.org. 21 Haziran 2021. 27 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N3035: _BitInt Fixes" (PDF). open-std.org. 21 Temmuz 2022. 13 Ekim 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2867: Checked N-Bit Integers" (PDF). open-std.org. 28 Kasım 2021. 14 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2778: Variably-Modified Types" (PDF). open-std.org. 11 Temmuz 2021. 22 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2607: Compatibility of Pointers to Arrays with Qualifiers" (PDF). open-std.org. 31 Ekim 2020. 13 Ekim 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2899: Not-so-magic - typeof for C". open-std.org. 21 Ocak 2022. 24 Aralık 2022 tarihinde kaynağından arşivlendi.
- ^ "WG14-N3007: Type inference for object definitions". open-std.org. 10 Haziran 2022. 24 Aralık 2022 tarihinde kaynağından arşivlendi.
- ^ "WG14-N3037: Improved Rules for Tag Compatibility (updates N3032)" (PDF). 17 Eylül 2024 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 3 Ekim 2024.
- ^ "C23 is Finished: Here is What is on the Menu". The Pasture (İngilizce). 31 Temmuz 2022. 27 Eylül 2024 tarihinde kaynağından arşivlendi. Erişim tarihi: 3 Ekim 2024.
- ^ "WG14-N2775: Literal suffixes for bit-precise integers" (PDF). open-std.org. 13 Temmuz 2021. 27 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2549: Allow for binary integer constants" (PDF). open-std.org. 30 Temmuz 2020. 22 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2626: Digit separators" (PDF). open-std.org. 15 Aralık 2020. 19 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N3030: Enhancements to Enumerations". open-std.org. 19 Temmuz 2022. 26 Kasım 2022 tarihinde kaynağından arşivlendi.
- ^ "WG14-N3029: Improved Normal Enumerations". open-std.org. 19 Temmuz 2022. 29 Ocak 2023 tarihinde kaynağından arşivlendi.
- ^ "WG14-N2508: Free Positioning of Labels Inside Compound Statements" (PDF). open-std.org. 28 Mart 2020. 27 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2510: Allowing unnamed parameters in a function definition" (PDF). open-std.org. 9 Nisan 2020. 24 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2900: Consistent, Warningless, and Intuitive Initialization with {}". open-std.org. 1 Ocak 2022. 27 Aralık 2022 tarihinde kaynağından arşivlendi.
- ^ "WG14-N2975: Relax requirements for variadic parameter lists" (PDF). open-std.org. 15 Nisan 2022. 28 Kasım 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2335: Attributes in C" (PDF). open-std.org. 9 Mart 2019. 26 Ekim 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ a b "Unsequenced functions". open-std.org. 24 Mayıs 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 18 Temmuz 2024.
- ^ "WG14-N2265: Harmonizing static_assert with C++" (PDF). open-std.org. 6 Temmuz 2018. 28 Mart 2023 tarihinde kaynağından arşivlendi (PDF).
- ^ "Labels at the end of compound statements (C compatibility)" (PDF). 13 Ocak 2022. 17 Haziran 2022 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 13 Ekim 2024.
- ^ "WG14-N2554: Minor attribute wording cleanups" (PDF). open-std.org. 4 Ağustos 2020. 28 Kasım 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2334: The deprecated attribute" (PDF). open-std.org. 22 Ocak 2019. 19 Ekim 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2408: The fallthrough attribute" (PDF). open-std.org. 11 Ağustos 2019. 25 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2270: The maybe_unused attribute" (PDF). open-std.org. 6 Temmuz 2018. 25 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2267: The nodiscard attribute" (PDF). open-std.org. 6 Temmuz 2018. 19 Ekim 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2764: The noreturn attribute" (PDF). open-std.org. 21 Haziran 2021. 25 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2557: Allow Duplicate Attributes" (PDF). open-std.org. 1 Eylül 2020. 28 Kasım 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2418: Adding the u8 character prefix" (PDF). open-std.org. 2 Eylül 2019. 13 Ocak 2023 tarihinde kaynağından arşivlendi (PDF).
- ^ "What is the point of the UTF-8 character literals proposed for C++17?; Stack Overflow". 10 Kasım 2024 tarihinde kaynağından arşivlendi. Erişim tarihi: 13 Ekim 2024.
- ^ "WG14-N2341: ISO/IEC TS 18661-2 - Floating-point extensions for C - Part 2: Decimal floating-point arithmetic" (PDF). open-std.org. 26 Şubat 2019. 21 Kasım 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2601: Annex X - IEC 60559 interchange and extended types" (PDF). open-std.org. 15 Ekim 2020. 14 Ekim 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N3018: The constexpr specifier for object definitions". open-std.org. 6 Temmuz 2022. 24 Aralık 2022 tarihinde kaynağından arşivlendi.
- ^ "WG14-N2653: char8_t: A type for UTF-8 characters and strings (Revision 1)". open-std.org. 4 Haziran 2021. 27 Mayıs 2023 tarihinde kaynağından arşivlendi.
- ^ "WG14-N2728: char16_t & char32_t string literals shall be UTF-16 & UTF-32". open-std.org. 15 Mayıs 2021. 27 Mayıs 2023 tarihinde kaynağından arşivlendi.
- ^ "WG14-N3038: Introduce storage-class specifiers for compound literals". open-std.org. 21 Temmuz 2022. 26 Kasım 2022 tarihinde kaynağından arşivlendi.
- ^ "WG14-N2940: Removing trigraphs??!" (PDF). open-std.org. 2 Mart 2022. 26 Ekim 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2432: Remove support for function definitions with identifier lists proposal" (PDF). open-std.org. 25 Eylül 2019. 27 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2841: No function declarators without prototypes". open-std.org. 10 Ekim 2021. 12 Kasım 2022 tarihinde kaynağından arşivlendi.
- ^ "WG14-N2412: Two's complement sign representation" (PDF). open-std.org. 11 Ağustos 2019. 27 Aralık 2022 tarihinde kaynağından arşivlendi (PDF).
- ^ "WG14-N2993: Make *_HAS_SUBNORM be obsolescent". open-std.org. 6 Haziran 2022. 5 Aralık 2022 tarihinde kaynağından arşivlendi.
- ^ "N3221 - Editor's Report, Post January 2024 Meeting". open-std.org. 15 Şubat 2024. 24 Mayıs 2024 tarihinde kaynağından arşivlendi.
Dış bağlantılar
[değiştir | kaynağı değiştir]- WG14 Document Repository
- WG14 Meetings - agenda and minutes
- WG14 Charters: C2x Charter, C23 Charter, Interpreting the C23 Charter, C Standard Charter