İçeriğe atla

C23 (C standart revizyonu)

Vikipedi, özgür ansiklopedi

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'ü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() ve strndup() 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 hepsi stdc_ şeklinde öneklendirildi.[10][11]
    • Aşağıdaki fonksiyonlarda * karakteri, uc, us, ui, ul, ull olarak 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*() ve stdc_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*() ve stdc_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*() and stdc_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*() ve stdc_first_leading_zero*().[10]
    • En az değeri oluşturan bit'ten itibaren, sırasıyla, ilk 1 ve 0 bitlerinin pozisyonunu verenstdc_first_trailing_one*() ve stdc_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]
  • glibc ve musl kütüphanelerinde bulunan ve verilen zamanı takvim zamanına dönüştürentimegm() 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]
  • 0b ve 0B binary dönüşüm desteği strtol() ve wcstol() fonksiyon ailesine eklendi.[13]
  • bsearch(), bsearch_s(), memchr(), strchr(), strpbrk(), strrchr(), strstr() fonksiyonları ile bunların genişletilmiş karakter için olaran versiyonları olan wmemchr(), 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]
  • true ve false anahtar sözcükleri eklendi.[15]
  • alignas, alignof, bool, static_assert ve thread_local anahtar 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]
  • _BitInt anahtar sözcüğü eklendi
  • typeof ve typeof_unqual anahtar sözcükleri eklendi
  • nullptr anahtar sözcüğü eklendi
  • constexpr anahtar sözcüğü eklendi
  • _Decimal32, _Decimal64, _Decimal128 anahtar sözcükleri on tabanındaki kayan noktalı sayı aritmatiğinde isteğe bağlı kullanılabilecek şekilde eklendi
  • #elif defined ve #elif !defined direktiflerine eşdeğer olan #elifdef ve #elifndef direktifleri[17] eklendi. Her iki direktif de önceden C++23 standardına ve GCC 12'de eklenmişti.[18]
  • Binary kaynak (resource) include etmeye yarayan #embed direktifi ile bu kaynağın erişilebilir olup olmadığını önişlemci direktifiyle sorgulamaya yarayan __has_embed eklendi.[19]
  • Derlemede uyarı mesajı vermeye yarayan #warning eklendi.[20]
  • Bir başlık dosyasının ulaşılabilir olup olmadığını önişlemci direktifiyle kontrol etmeye yarayan __has_include eklendi.[21]
  • Bir özniteliğin (attribute) ulaşılabilir olup olmadığını önişlemci direktifiyle kontrol etmeye yarayan __has_c_attribute eklendi.[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]
  • Null pointer türü olan nullptr_t eklendi.[24]
  • Bit kesinlikli integer türleri olan _BitInt(N) ve unsigned _BitInt(N) eklendi. Maximum bit genişliğini veren BITINT_MAXWIDTH eklendi.[25][26]
  • Tamsayı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 const desteği.[29]
  • typeof(...) operatörü standardlaştırıldı.[30]
  • auto anahtar 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_t ve uintN_t gibi) integer değerlerinin ​intmax_t​'nin değerini geçebilmesine izin verildi.(N2888).[33]
  • nullptr_t türünün bir sabiti olan nullptr eklendi,[24]
  • _BitInt(N) ve unsigned _BitInt(N) türleri için wb ve uwb integer literal sonekleri eklendi,[34]
  • Binary sayı sabiti için 0b ile 0B önekleri eklendi,[35]
  • Sayılarda basamak ayracı olarak kullanılabilen ' eklendi,[36]
  • enum tü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ş enum türleri için int ifade edilemeyen değerlere (INT_MAX'tan büyük ve INT_MIN'den küçük) izin verildi.[38]
  • 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_start makrosu 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:
    • Yalnızca fonksiyon parametrelerine bakarak tekrar aynı sonuçları üretilebileceğini derleyiciye bildiren ve optimizasyonu mümkün kılan [[unsequenced]] özniteliği[44]
    • [[unsequenced]] özniteliğine benzer ancak fonksiyon çağrılma sırasına bağımlı olan [[reproducible]] özniteliği,[44]
  • C++17 ile uyumluluk amacıyla tek argümanlı _Static_assert eklendi (assert.h).[45]
  • Bir argümana sahip olmayan fonksiyonların parametre listesinde void belirtmesi 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_assert gibi 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, noreturn ile <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]
  • #elifdef ve #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 constexpr belirteci nesneler 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_t türü eklendi ve u8 karakter değişmezlerinin (constant) ve string literallerinin türü char8_t olarak değiştirildi.[59]
  • Başka bir şekilde olması belirtilmediği takdirde, tüm char16_t string ve literal'lerin UTF-16 ve char32_t string 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_SUBNORM makroları <float.h>'tan kaldırıldı.[66]
  • 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)
  1. ^ "History of C". cppreference.com. 27 Haziran 2022. 19 Ekim 2022 tarihinde kaynağından arşivlendi. 
  2. ^ "WG14-N2086: C2x Charter". open-std.org. 20 Eylül 2016. 22 Aralık 2022 tarihinde kaynağından arşivlendi. 
  3. ^ 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. 
  4. ^ "WG14-N2437: Agenda for October 2019". open-std.org. 21 Ekim 2019. 5 Mart 2021 tarihinde kaynağından arşivlendi. 
  5. ^ "WG14-N3096: Draft for ISO/IEC 9899:2024" (PDF). open-std.org. 1 Nisan 2023. 2 Nisan 2023 tarihinde kaynağından arşivlendi (PDF). 
  6. ^ "WG14-N2897: memset_explicit()". open-std.org. 27 Aralık 2021. 25 Ekim 2022 tarihinde kaynağından arşivlendi. 
  7. ^ "WG14-N2349: Toward more efficient string copying and concatenation". open-std.org. 18 Mart 2019. 30 Eylül 2022 tarihinde kaynağından arşivlendi. 
  8. ^ "WG14-N2353: strdup() and strndup()". open-std.org. 18 Mart 2019. 24 Aralık 2022 tarihinde kaynağından arşivlendi. 
  9. ^ "WG14-N2974: Queryable pointer alignment" (PDF). open-std.org. 15 Nisan 2022. 13 Ekim 2022 tarihinde kaynağından arşivlendi (PDF). 
  10. ^ 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. 
  11. ^ "21 Bit Manipulation". 29 Eylül 2024. 
  12. ^ "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. 
  13. ^ 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). 
  14. ^ "WG14-N3020: Qualifier-preserving standard library functions" (PDF). open-std.org. 13 Haziran 2022. 13 Ekim 2022 tarihinde kaynağından arşivlendi (PDF). 
  15. ^ "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). 
  16. ^ "WG14-N2934: Revise spelling of keywords" (PDF). open-std.org. 15 Şubat 2022. 24 Aralık 2022 tarihinde kaynağından arşivlendi (PDF). 
  17. ^ 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). 
  18. ^ "GCC 12 Adds Support For New #elifdef #elifndef Directives". phoronix. 12 Mayıs 2021. 27 Aralık 2022 tarihinde kaynağından arşivlendi. 
  19. ^ "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. 
  20. ^ "WG14-N2686: #warning" (PDF). open-std.org. 22 Temmuz 2022. 28 Kasım 2022 tarihinde kaynağından arşivlendi (PDF). 
  21. ^ "WG14-N2799: __has_include for C" (PDF). open-std.org. 30 Ağustos 2021. 24 Aralık 2022 tarihinde kaynağından arşivlendi (PDF). 
  22. ^ "WG14-N2553: Querying attribute support" (PDF). open-std.org. 4 Ağustos 2020. 14 Ekim 2022 tarihinde kaynağından arşivlendi (PDF). 
  23. ^ "WG14-N3033: Comma omission and comma deletion". open-std.org. 20 Temmuz 2022. 27 Aralık 2022 tarihinde kaynağından arşivlendi. 
  24. ^ a b "WR14-N3042: Introduce the nullptr constant". open-std.org. 22 Temmuz 2022. 24 Aralık 2022 tarihinde kaynağından arşivlendi. 
  25. ^ "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). 
  26. ^ "WG14-N3035: _BitInt Fixes" (PDF). open-std.org. 21 Temmuz 2022. 13 Ekim 2022 tarihinde kaynağından arşivlendi (PDF). 
  27. ^ "WG14-N2867: Checked N-Bit Integers" (PDF). open-std.org. 28 Kasım 2021. 14 Aralık 2022 tarihinde kaynağından arşivlendi (PDF). 
  28. ^ "WG14-N2778: Variably-Modified Types" (PDF). open-std.org. 11 Temmuz 2021. 22 Aralık 2022 tarihinde kaynağından arşivlendi (PDF). 
  29. ^ "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). 
  30. ^ "WG14-N2899: Not-so-magic - typeof for C". open-std.org. 21 Ocak 2022. 24 Aralık 2022 tarihinde kaynağından arşivlendi. 
  31. ^ "WG14-N3007: Type inference for object definitions". open-std.org. 10 Haziran 2022. 24 Aralık 2022 tarihinde kaynağından arşivlendi. 
  32. ^ "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. 
  33. ^ "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. 
  34. ^ "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). 
  35. ^ "WG14-N2549: Allow for binary integer constants" (PDF). open-std.org. 30 Temmuz 2020. 22 Aralık 2022 tarihinde kaynağından arşivlendi (PDF). 
  36. ^ "WG14-N2626: Digit separators" (PDF). open-std.org. 15 Aralık 2020. 19 Aralık 2022 tarihinde kaynağından arşivlendi (PDF). 
  37. ^ "WG14-N3030: Enhancements to Enumerations". open-std.org. 19 Temmuz 2022. 26 Kasım 2022 tarihinde kaynağından arşivlendi. 
  38. ^ "WG14-N3029: Improved Normal Enumerations". open-std.org. 19 Temmuz 2022. 29 Ocak 2023 tarihinde kaynağından arşivlendi. 
  39. ^ "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). 
  40. ^ "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). 
  41. ^ "WG14-N2900: Consistent, Warningless, and Intuitive Initialization with {}". open-std.org. 1 Ocak 2022. 27 Aralık 2022 tarihinde kaynağından arşivlendi. 
  42. ^ "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). 
  43. ^ "WG14-N2335: Attributes in C" (PDF). open-std.org. 9 Mart 2019. 26 Ekim 2022 tarihinde kaynağından arşivlendi (PDF). 
  44. ^ a b "Unsequenced functions". open-std.org. 24 Mayıs 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 18 Temmuz 2024. 
  45. ^ "WG14-N2265: Harmonizing static_assert with C++" (PDF). open-std.org. 6 Temmuz 2018. 28 Mart 2023 tarihinde kaynağından arşivlendi (PDF). 
  46. ^ "Labels at the end of compound statements (C compatibility)" (PDF). 13 Ocak 2022. 
  47. ^ "WG14-N2554: Minor attribute wording cleanups" (PDF). open-std.org. 4 Ağustos 2020. 28 Kasım 2022 tarihinde kaynağından arşivlendi (PDF). 
  48. ^ "WG14-N2334: The deprecated attribute" (PDF). open-std.org. 22 Ocak 2019. 19 Ekim 2022 tarihinde kaynağından arşivlendi (PDF). 
  49. ^ "WG14-N2408: The fallthrough attribute" (PDF). open-std.org. 11 Ağustos 2019. 25 Aralık 2022 tarihinde kaynağından arşivlendi (PDF). 
  50. ^ "WG14-N2270: The maybe_unused attribute" (PDF). open-std.org. 6 Temmuz 2018. 25 Aralık 2022 tarihinde kaynağından arşivlendi (PDF). 
  51. ^ "WG14-N2267: The nodiscard attribute" (PDF). open-std.org. 6 Temmuz 2018. 19 Ekim 2022 tarihinde kaynağından arşivlendi (PDF). 
  52. ^ "WG14-N2764: The noreturn attribute" (PDF). open-std.org. 21 Haziran 2021. 25 Aralık 2022 tarihinde kaynağından arşivlendi (PDF). 
  53. ^ "WG14-N2557: Allow Duplicate Attributes" (PDF). open-std.org. 1 Eylül 2020. 28 Kasım 2022 tarihinde kaynağından arşivlendi (PDF). 
  54. ^ "WG14-N2418: Adding the u8 character prefix" (PDF). open-std.org. 2 Eylül 2019. 13 Ocak 2023 tarihinde kaynağından arşivlendi (PDF). 
  55. ^ What is the point of the UTF-8 character literals proposed for C++17?; Stack Overflow.
  56. ^ "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). 
  57. ^ "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). 
  58. ^ "WG14-N3018: The constexpr specifier for object definitions". open-std.org. 6 Temmuz 2022. 24 Aralık 2022 tarihinde kaynağından arşivlendi. 
  59. ^ "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. 
  60. ^ "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. 
  61. ^ "WG14-N3038: Introduce storage-class specifiers for compound literals". open-std.org. 21 Temmuz 2022. 26 Kasım 2022 tarihinde kaynağından arşivlendi. 
  62. ^ "WG14-N2940: Removing trigraphs??!" (PDF). open-std.org. 2 Mart 2022. 26 Ekim 2022 tarihinde kaynağından arşivlendi (PDF). 
  63. ^ "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). 
  64. ^ "WG14-N2841: No function declarators without prototypes". open-std.org. 10 Ekim 2021. 12 Kasım 2022 tarihinde kaynağından arşivlendi. 
  65. ^ "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). 
  66. ^ "WG14-N2993: Make *_HAS_SUBNORM be obsolescent". open-std.org. 6 Haziran 2022. 5 Aralık 2022 tarihinde kaynağından arşivlendi. 
  67. ^ "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]

Önce gelen
C17
C dili standartları En son