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) yerini alması beklenmektedir. 2016'da gayriresmi olarak C2x ve adıyla üzerinde çalışılmaya başlanmıştır ve Ekim 2024'te 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 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
C23'ün en son çalışma taslağında değişiklikler aşağıda listelenmiştir.
Standard Kütüphane
Yeni eklenen fonksiyonlar
- Optimizasyonlardan etkilenmeden bellekte saklanan hassas veriyi silen
memset_explicit()
fonksiyonu<string.h>
başlığına eklendi. - POSIX ve C uzantılarına benzer şekilde, belli bir baytla karşılaşılana kadar bellek kopyalayan
memccpy()
fonksiyonu<string.h>
başlığına eklendi. - POSIX ve C uzantılarına benzer şekilde, bir string'in kopyasını oluşturan
strdup()
vestrndup()
fonksiyonları<string.h>
başlığına eklendi. - İşaretçinin bellekte hizalanma (alignment) şeklini anlamak için
memalignment()
fonksiyonu<stdlib.h>
başlığına eklendi. - 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.- 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. - Bir değerdeki 1 veya 0 bitlerini saymak için
stdc_count_ones*()
vestdc_count_zeros*()
eklendi. - 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*()
. - 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*()
. - 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*()
. - 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*()
. - Bir değerin 2'nin çarpanı olup olmadığına karar vermek için
stdc_has_single_bit*()
. - 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*()
. - 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*()
. - Bir değeri temsil etmek için gerekli bit sayısı için
stdc_bit_width*()
.
- 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.
Mevcut fonksiyonlara yapılan değişikler
- Binary'e (2 tabanında sayıya) dönüşüm belirteci olan
%b
,printf()
fonksiyon ailesine eklendi. - Binary dönüşüm belirteci olan
%b
,scanf()
fonksiyon ailesine eklendi. 0b
ve0B
binary dönüşüm desteğistrtol()
vewcstol()
fonksiyon ailesine eklendi.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.
Anahtar sözcükler
true
vefalse
anahtar sözcükleri eklendi.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
._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
#elif defined
ve#elif !defined
eşdeğer olan#elifdef
ve#elifndef
direktifleri eklendi. Her iki direktif de önceden standardına ve GCC 12'de eklenmişti.- 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. - Derlemede uyarı mesajı vermeye yarayan
#warning
eklendi. - Bir başlık dosyasının ulaşılabilir olup olmadığını önişlemci direktifiyle kontrol etmeye yarayan
__has_include
eklendi. - Bir etiketin (attribute) ulaşılabilir olup olmadığını önişlemci direktifiyle kontrol etmeye yarayan
__has_c_attribute
eklendi. - 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.
Tipler
- Null pointer türü olan eklendi.
- Bit kesinlikli integer türleri olan
_BitInt(N)
veunsigned _BitInt(N)
eklendi. Maximum bit genişliğini verenBITINT_MAXWIDTH
eklendi. - Tamsayılar için kontrol edilmiş işlemler sağlayan
ckd_add()
,ckd_sub()
,ckd_mul()
jenerik macrolar. - 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).
- Dizi türleri için daha iyi
const
desteği. typeof(...)
operatörü standardlaştırıldı.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. '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.- 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. - Belli bit genişliğindeki (
intN_t
veuintN_t
gibi) integer değerlerininintmax_t
'nin değerini geçebilmesine izin verildi.(N2888).
Sabitler
nullptr_t
türünün bir sabiti olan eklendi,_BitInt(N)
veunsigned _BitInt(N)
türleri içinwb
veuwb
integer literal sonekleri eklendi,- Binary sayı sabiti için
0b
ile0B
önekleri eklendi, - Sayılarda basamak ayracı olarak kullanılabilen
'
eklendi, enum
türlerinin temsil ettiği sabitler için ifade ettiği değerlerin türünü belirleme özelliği getirildi,- 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.
Sözdizim
- Etiketlerin (label) bildirimlerden önce ve birleşik deyimlerin (compound statements) sonunda yapılabilmesine izin verildi.
- Fonksiyon tanımlarında isimsiz parametrelere izin verildi.
- VLA için de kullanılabilecek olan
{}
kullanarak sıfır ilk değer ataması - 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. - 'deki gibi
kullanan öznitelik (attribute) sözdizimi eklendi. 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 [[unsequenced]]
özniteliğine benzer ancak fonksiyon çağrılma sırasına bağımlı olan[[reproducible]]
özniteliği,
- Yalnızca fonksiyon parametrelerine bakarak tekrar aynı sonuçları üretilebileceğini derleyiciye bildiren ve optimizasyonu mümkün kılan
- ile uyumluluk amacıyla tek argümanlı
_Static_assert
eklendi (assert.h
). - Bir argümana sahip olmayan fonksiyonların parametre listesinde
void
belirtmesi gerekliliği kaldırıldı (void foo()
şeklinde).
Kaynakça
- ^ "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).
- ^ "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. 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).
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
C23 C programlama dilinin acik standard taslagidir ve ISO IEC 9899 2024 olarak yayinlanmasi ve C17 nin ISO IEC 9899 2018 yerini almasi beklenmektedir 2016 da gayriresmi olarak C2x ve adiyla uzerinde calisilmaya baslanmistir ve Ekim 2024 te yayinlanmasi beklenmektedir C23 un en son taslagi 1 Nisan 2023 te yayinlanmistir ve genel erisime aciktir WG14 Working Group 14 14 Calisma Grubu C2x taslagi icin ilk olarak Ekim 2019 toplanmis 2020 te COVID 19 pandemisi nedeniyle toplantilar sanal olarak uzaktan yapilmis sonrasinda telekonferans toplantilari 2024 boyunca devam etmistir Haziran 2024 teki acik standardta C23 un bitiminden sonra C2y olarak adlandirildigi belirtilmistir OzelliklerC23 un en son calisma taslaginda degisiklikler asagida listelenmistir Standard Kutuphane Yeni eklenen fonksiyonlar Optimizasyonlardan etkilenmeden bellekte saklanan hassas veriyi silen memset explicit fonksiyonu lt string h gt basligina eklendi POSIX ve C uzantilarina benzer sekilde belli bir baytla karsilasilana kadar bellek kopyalayan memccpy fonksiyonu lt string h gt basligina eklendi POSIX ve C uzantilarina benzer sekilde bir string in kopyasini olusturan strdup ve strndup fonksiyonlari lt string h gt basligina eklendi Isaretcinin bellekte hizalanma alignment seklini anlamak icin memalignment fonksiyonu lt stdlib h gt basligina eklendi Pek cok integer turu icin bitlerle ilgili bilgi elde etmek amacli fonksiyon macro ve turler lt stdbit h gt basligina eklendi Varolan kutuphanelerle isim cakismasini onlemek icin hepsi stdc seklinde oneklendirildi Asagidaki fonksiyonlarda karakteri uc us ui ul ull olarak farkli integer turlerini ifade edecek sekilde 5 fonksiyon adini temsil etmektedir olmayacak sekilde jenerik type generic makro olarak da kullanilabilir Bir degerdeki 1 veya 0 bitlerini saymak icin stdc count ones ve stdc count zeros eklendi En cok degeri olusturan bit ten MSB most significant bit itibaren sirasiyla yan yana 1 ve 0 sayilarini veren stdc leading ones ve stdc leading zeros En az degeri olusturan bit ten LSB most significant bit itibaren sirasiyla sayinin basindan baslayip 1 ve 0 bit lerinin sayilarini veren stdc trailing ones and stdc trailing zeros En cok degeri olusturan bit ten itibaren sirasiyla ilk 1 ve 0 bitlerinin pozisyonunu veren stdc first leading one ve stdc first leading zero En az degeri olusturan bit ten itibaren sirasiyla ilk 1 ve 0 bitlerinin pozisyonunu verenstdc first trailing one ve stdc first trailing zero Bir degerin 2 nin carpani olup olmadigina karar vermek icin stdc has single bit Gecilen degerden buyuk veya ona esit olan 2 nin en buyuk tam kuvvetini donduren stdc bit floor Gecilen degerden buyuk veya ona esit olan 2 nin en kucuk tam kuvvetini donduren stdc bit ceil Bir degeri temsil etmek icin gerekli bit sayisi icin stdc bit width glibc ve musl kutuphanelerinde bulunan ve verilen zamani takvim zamanina donusturentimegm fonksiyonu lt time h gt basligina eklendi Mevcut fonksiyonlara yapilan degisikler Binary e 2 tabaninda sayiya donusum belirteci olan b printf fonksiyon ailesine eklendi Binary donusum belirteci olan b scanf fonksiyon ailesine eklendi 0b ve 0B binary donusum destegi strtol ve wcstol fonksiyon ailesine eklendi bsearch bsearch s memchr strchr strpbrk strrchr strstr fonksiyonlari ile bunlarin genisletilmis karakter icin olaran versiyonlari olan wmemchr wcschr wcspbrk wcsrchr wcsstr fonksiyonlarina eger const nesneler gecildiyse const nitelenmis nesne dondurecek sekilde degistirildi Anahtar sozcukler span class nb true span ve span class nb false span anahtar sozcukleri eklendi span class k alignas span span class k alignof span span class kt bool span span class k static assert span ve span class err span span class k thread local span span class err span anahtar sozcukleri eklendi Daha once tanimlanmis olan anahtar sozcukler yenilerine alternatif olarak kullanilabilecek sekilde birakildi span class k Alignas span span class k Alignof span span class kt Bool span span class k Static assert span span class k Thread local span span class kt BitInt span anahtar sozcugu eklendi span class n typeof span ve span class n typeof unqual span anahtar sozcukleri eklendi span class n nullptr span anahtar sozcugu eklendi span class n constexpr span anahtar sozcugu eklendi span class n Decimal32 span span class n Decimal64 span span class n Decimal128 span anahtar sozcukleri on tabanindaki kayan noktali sayi aritmatiginde istege bagli kullanilabilecek sekilde eklendiOnislemci span class cp elif defined span ve span class cp elif defined span esdeger olan span class cp elifdef span ve span class cp elifndef span direktifleri eklendi Her iki direktif de onceden standardina ve GCC 12 de eklenmisti Binary kaynak resource include etmeye yarayan span class cp embed span direktifi ile bu kaynagin erisilebilir olup olmadigini onislemci direktifiyle sorgulamaya yarayan span class n has embed span eklendi Derlemede uyari mesaji vermeye yarayan span class cp warning span eklendi Bir baslik dosyasinin ulasilabilir olup olmadigini onislemci direktifiyle kontrol etmeye yarayan span class n has include span eklendi Bir etiketin attribute ulasilabilir olup olmadigini onislemci direktifiyle kontrol etmeye yarayan span class n has c attribute span eklendi Bir makroya yalnizca degisebilen sayida variadic arguman gecildiginde genisleyen ve variadic makrolar olusturmaya yarayan span class n VA OPT span fonksiyonel makrosu eklendi Tipler Null pointer turu olan eklendi Bit kesinlikli integer turleri olan span class kt BitInt span span class p span span class n N span span class p span ve span class kt unsigned span span class w span span class kt BitInt span span class p span span class n N span span class p span eklendi Maximum bit genisligini veren span class n BITINT MAXWIDTH span eklendi Tamsayilar icin kontrol edilmis islemler saglayan ckd add ckd sub ckd mul jenerik macrolar Dizi turlerinin fonksiyona dizi boyu bilgisiyle gecilmesine izin verildi Bu ozellik yigin bellekte tahsis edilmis otomatik saklama surecinde barindirilan degisken boylu diziler Variable length array VLA icin gecerli degildir Dizi turleri icin daha iyi const destegi typeof operatoru standardlastirildi span class k auto span anahtar sozcugunun anlami tur belirleme yapabilecek sekilde genistildi fakat barindirma sinifi belirteci seklindeki onceki anlami auto bir tur ile birlikte kullanildiginda hala kullanilabilir olacak sekilde korundu C tan farkli olarak C23 tur belirlemesi yalnizca nesne tanimlari icin gecerlidir fonksiyon donus turu ve paramatresi olarak kullanilamaz struct union ve enum turlerinin tanimi ile birlikte yapilan nesne deklerasyonlarinda struct S s gibi farkli nesnelerin ayni donusum biriminde translation unit TU bulunmasina izin verildi Belli bit genisligindeki span class n intN t span ve span class n uintN t span gibi integer degerlerinin intmax t nin degerini gecebilmesine izin verildi N2888 Sabitler nullptr t turunun bir sabiti olan eklendi span class kt BitInt span span class p span span class n N span span class p span ve span class kt unsigned span span class w span span class kt BitInt span span class p span span class n N span span class p span turleri icin wb ve uwb integer literal sonekleri eklendi Binary sayi sabiti icin 0b ile 0B onekleri eklendi Sayilarda basamak ayraci olarak kullanilabilen eklendi enum turlerinin temsil ettigi sabitler icin ifade ettigi degerlerin turunu belirleme ozelligi getirildi Tuttugu integer turu belirtilmemis span class k enum span turleri icin span class kt int span ifade edilemeyen degerlere INT MAX tan buyuk ve INT MIN den kucuk izin verildi Sozdizim Etiketlerin label bildirimlerden once ve birlesik deyimlerin compound statements sonunda yapilabilmesine izin verildi Fonksiyon tanimlarinda isimsiz parametrelere izin verildi VLA icin de kullanilabilecek olan kullanarak sifir ilk deger atamasi Degisken sayida parametre alabilen variadic fonksiyonlarin ellipsis den once bir isimli arguman belirtilmesi sarti kaldirildi span class n va start span makrosu artik ikinci bir argumana sahip olmak zorunda veya varsa ilk argumandan sonraki argumanlari islemek evaluate zorunda degil deki gibi kullanan oznitelik attribute sozdizimi eklendi Ek olarak asagidaki oznitelikler eklendi Yalnizca fonksiyon parametrelerine bakarak tekrar ayni sonuclari uretilebilecegini derleyiciye bildiren ve optimizasyonu mumkun kilan unsequenced ozniteligi unsequenced ozniteligine benzer ancak fonksiyon cagrilma sirasina bagimli olan reproducible ozniteligi C 17 ile uyumluluk amaciyla tek argumanli Static assert eklendi assert h Bir argumana sahip olmayan fonksiyonlarin parametre listesinde void belirtmesi gerekliligi kaldirildi void foo seklinde Kaynakca History of C cppreference com 27 Haziran 2022 19 Ekim 2022 tarihinde kaynagindan arsivlendi WG14 N2086 C2x Charter open std org 20 Eylul 2016 22 Aralik 2022 tarihinde kaynagindan arsivlendi 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 Eylul 2024 tarihinde kaynagindan arsivlendi Erisim tarihi 27 Eylul 2024 WG14 N2437 Agenda for October 2019 open std org 21 Ekim 2019 5 Mart 2021 tarihinde kaynagindan arsivlendi WG14 N3096 Draft for ISO IEC 9899 2024 PDF open std org 1 Nisan 2023 2 Nisan 2023 tarihinde kaynagindan arsivlendi PDF WG14 N2897 memset explicit open std org 27 Aralik 2021 25 Ekim 2022 tarihinde kaynagindan arsivlendi WG14 N2349 Toward more efficient string copying and concatenation open std org 18 Mart 2019 30 Eylul 2022 tarihinde kaynagindan arsivlendi WG14 N2353 strdup and strndup open std org 18 Mart 2019 24 Aralik 2022 tarihinde kaynagindan arsivlendi WG14 N2974 Queryable pointer alignment PDF open std org 15 Nisan 2022 13 Ekim 2022 tarihinde kaynagindan arsivlendi PDF a b c d e f g h i j k WG14 N3022 Modern Bit Utilities open std org 6 Temmuz 2022 24 Aralik 2022 tarihinde kaynagindan arsivlendi 21 Bit Manipulation 29 Eylul 2024 Arsivlenmesi gereken baglantiya sahip kaynak sablonu iceren maddeler link WG14 N2833 Add timegm as non optional part of time h open std org 7 Ekim 2021 1 Aralik 2021 tarihinde kaynagindan arsivlendi a b c WG14 N2630 formatted input output of binary integer numbers PDF open std org 1 Ocak 2021 14 Aralik 2022 tarihinde kaynagindan arsivlendi PDF WG14 N3020 Qualifier preserving standard library functions PDF open std org 13 Haziran 2022 13 Ekim 2022 tarihinde kaynagindan arsivlendi PDF WG14 N2935 Make false and true first class language features PDF open std org 15 Subat 2022 21 Kasim 2022 tarihinde kaynagindan arsivlendi PDF WG14 N2934 Revise spelling of keywords PDF open std org 15 Subat 2022 24 Aralik 2022 tarihinde kaynagindan arsivlendi PDF WG14 N2645 Add support for preprocessing directives elifdef and elifndef PDF open std org 25 Ocak 2020 28 Kasim 2022 tarihinde kaynagindan arsivlendi PDF GCC 12 Adds Support For New elifdef elifndef Directives phoronix 12 Mayis 2021 27 Aralik 2022 tarihinde kaynagindan arsivlendi WG14 N3017 embed a scannable tooling friendly binary resource inclusion mechanism open std org 27 Haziran 2022 24 Aralik 2022 tarihinde kaynagindan arsivlendi WG14 N2686 warning PDF open std org 22 Temmuz 2022 28 Kasim 2022 tarihinde kaynagindan arsivlendi PDF WG14 N2799 has include for C PDF open std org 30 Agustos 2021 24 Aralik 2022 tarihinde kaynagindan arsivlendi PDF WG14 N2553 Querying attribute support PDF open std org 4 Agustos 2020 14 Ekim 2022 tarihinde kaynagindan arsivlendi PDF WG14 N3033 Comma omission and comma deletion open std org 20 Temmuz 2022 27 Aralik 2022 tarihinde kaynagindan arsivlendi a b WR14 N3042 Introduce the nullptr constant open std org 22 Temmuz 2022 24 Aralik 2022 tarihinde kaynagindan arsivlendi WG14 N2763 Adding a Fundamental Type for N bit integers PDF open std org 21 Haziran 2021 27 Aralik 2022 tarihinde kaynagindan arsivlendi PDF WG14 N3035 BitInt Fixes PDF open std org 21 Temmuz 2022 13 Ekim 2022 tarihinde kaynagindan arsivlendi PDF WG14 N2867 Checked N Bit Integers PDF open std org 28 Kasim 2021 14 Aralik 2022 tarihinde kaynagindan arsivlendi PDF WG14 N2778 Variably Modified Types PDF open std org 11 Temmuz 2021 22 Aralik 2022 tarihinde kaynagindan arsivlendi PDF WG14 N2607 Compatibility of Pointers to Arrays with Qualifiers PDF open std org 31 Ekim 2020 13 Ekim 2022 tarihinde kaynagindan arsivlendi PDF WG14 N2899 Not so magic typeof for C open std org 21 Ocak 2022 24 Aralik 2022 tarihinde kaynagindan arsivlendi WG14 N3007 Type inference for object definitions open std org 10 Haziran 2022 24 Aralik 2022 tarihinde kaynagindan arsivlendi WG14 N3037 Improved Rules for Tag Compatibility updates N3032 PDF 17 Eylul 2024 tarihinde kaynagindan arsivlendi PDF Erisim tarihi 3 Ekim 2024 C23 is Finished Here is What is on the Menu The Pasture Ingilizce 31 Temmuz 2022 27 Eylul 2024 tarihinde kaynagindan arsivlendi Erisim tarihi 3 Ekim 2024 WG14 N2775 Literal suffixes for bit precise integers PDF open std org 13 Temmuz 2021 27 Aralik 2022 tarihinde kaynagindan arsivlendi PDF WG14 N2549 Allow for binary integer constants PDF open std org 30 Temmuz 2020 22 Aralik 2022 tarihinde kaynagindan arsivlendi PDF WG14 N2626 Digit separators PDF open std org 15 Aralik 2020 19 Aralik 2022 tarihinde kaynagindan arsivlendi PDF WG14 N3030 Enhancements to Enumerations open std org 19 Temmuz 2022 26 Kasim 2022 tarihinde kaynagindan arsivlendi WG14 N3029 Improved Normal Enumerations open std org 19 Temmuz 2022 29 Ocak 2023 tarihinde kaynagindan arsivlendi WG14 N2508 Free Positioning of Labels Inside Compound Statements PDF open std org 28 Mart 2020 27 Aralik 2022 tarihinde kaynagindan arsivlendi PDF WG14 N2510 Allowing unnamed parameters in a function definition PDF open std org 9 Nisan 2020 24 Aralik 2022 tarihinde kaynagindan arsivlendi PDF WG14 N2900 Consistent Warningless and Intuitive Initialization with open std org 1 Ocak 2022 27 Aralik 2022 tarihinde kaynagindan arsivlendi WG14 N2975 Relax requirements for variadic parameter lists PDF open std org 15 Nisan 2022 28 Kasim 2022 tarihinde kaynagindan arsivlendi PDF WG14 N2335 Attributes in C PDF open std org 9 Mart 2019 26 Ekim 2022 tarihinde kaynagindan arsivlendi PDF a b Unsequenced functions open std org Erisim tarihi 18 Temmuz 2024 Arsivlenmesi gereken baglantiya sahip kaynak sablonu iceren maddeler link WG14 N2265 Harmonizing static assert with C PDF open std org 6 Temmuz 2018 28 Mart 2023 tarihinde kaynagindan arsivlendi PDF