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.
Ö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
,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*()
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] 0b
ve0B
binary 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]true
vefalse
anahtar sözcükleri eklendi.[15]alignas
,alignof
,bool
,static_assert
vethread_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üğü eklenditypeof
vetypeof_unqual
anahtar sözcükleri eklendinullptr
anahtar sözcüğü eklendiconstexpr
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
Önişlemci
[değiştir | kaynağı değiştir]#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]
Tipler
[değiştir | kaynağı değiştir]- Null pointer türü olan
nullptr_t
eklendi.[24] - Bit kesinlikli integer türleri olan
_BitInt(N)
veunsigned _BitInt(N)
eklendi. Maximum bit genişliğini verenBITINT_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
veuintN_t
gibi) integer değerlerininintmax_t
'nin değerini geçebilmesine izin verildi.(N2888).[33]
Sabitler
[değiştir | kaynağı değiştir]nullptr_t
türünün bir sabiti olannullptr
eklendi,[24]_BitInt(N)
veunsigned _BitInt(N)
türleri içinwb
veuwb
integer literal sonekleri eklendi,[34]- Binary sayı sabiti için
0b
ile0B
ö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çinint
ifade 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_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:
- 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 vechar32_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]
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.
- ^ "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.
- ^ "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