08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

typedef unsigned int size_t;<br />

Bu tür gerçekte ne olduğu derleyicileri yazanlara bırakılmış olan bir türdür. Derleyiciler<br />

ilgili başlık dosyalarında yapılan typedef bildirimleriyle işaretsiz bir tamsayı türlerinden<br />

birine size_t ismini verir. Standartlara göre size_t türü sizeof işlecinin ürettiği değerin<br />

türüdür. ANSI standartlarında bir çok işlevin bildiriminde size_t türü geçer. Örneğin strlen<br />

işlevinin gerçek bildirimi, string.h başlık dosyasının içinde<br />

size_t strlen(const char *);<br />

olarak yapılır.<br />

Yani malloc işlevinin parametre değişkeni ya da strlen işlevinin geri dönüş değeri size_t<br />

türündendir. Bu türün gerçekte ne olduğu derleyicileri yazanlara bırakılır. Ancak hemen<br />

hemen bütün derleyicilerde size_t türü unsigned int türünün typedef ismi olarak<br />

belirlenir.<br />

size_t türü gibi aslında ne olduğu derleyiciye bırakılmış olan, yani derleyici yazanların ilgili<br />

başlık dosyalarında typedef bildirimlerini yapacakları başka tür isimleri de C standartları<br />

tarafından tanımlanmıştır. Bu türlerden bazıları şunlardır:<br />

time_t : standart time işlevinin geri dönüş değerinin türüdür. time.h başlık dosyası içinde,<br />

derleyiciyi yazanlar herhangi bir temel veri türüne typedef bildirimiyle bu ismi verirler. Bir<br />

zorunluluk olmasa da, time_t derleyicilerin hemen hepsinde long türünün typedef ismi<br />

olarak seçilir.<br />

clock_t : standart clock işlevinin geri dönüş değerinin türüdür. time.h başlık dosyası<br />

içinde, derleyiciyi yazanlar herhangi bir temel veri türüne typedef bildirimiyle bu ismi<br />

verirler. Derleyicilerin hemen hepsinde long türünün typedef ismi olarak seçilir.<br />

ptrdiff_t : Bir adres bilgisinden başka bir adres bilgisinin çıkartılmasıyla bir tamsayı elde<br />

edildiğini biliyorsunuz. İki adresin birbirinden farkı ptrdiff_t türündendir. Zaten bu türün<br />

ismi de pointer difference sözcüklerinden gelir. Bu tür işaretli tamsayı türlerinden biri<br />

olmak zorundadır. Derleyicilerin hemen hepsinde int türünün typedef ismi olarak seçilir.<br />

fpos_t: stdio.h başlık dosyası içinde bildirilen fgetpos ve fsetpos işlevlerinin parametre<br />

değişkeni olan göstericilerin türüdür.<br />

wchar_t: Bu türün bildirimin stdlib.h ve stddef.h başlık dosyalarının içinde yapılmıştır.<br />

Sistem tarafından desteklenen yöredeki (locale) en büyük genişletilmiş karakter setini<br />

temsil edebilecek bir türdür. Örneğin genişletilmiş karakter setinin tüm değerleri iki<br />

byte'lık bir alanda ifade edilebiliyorsa wchar_t türü unsigned short int türünün typedef<br />

ismi olabilir. wchar_t ismi wide character sözcüklerinden gelir. Geniş karakterler, geniş<br />

karakter değişmezleri, çoklu karakterler gibi noktalara "yerelleştirme" konusunda<br />

ayrıntılı olarak değinilecek.<br />

div_t ve ldiv_t: Bu türlerin bildirimleri stdlib.h isimli başlık dosyasında yapılmıştır. div_t<br />

stdlib.h içinde bildirilen standart div işlevinin geri dönüş değeri olan yapı türüdür. ldiv_t<br />

türü de yine stdlib.h başlık dosyası içinde bildirilen ldiv isimli işlevin geri dönüş değeri<br />

olan yapı türüdür.<br />

typedef ile Bildirimi Yapılan Tür İsimlerinin Bilinirlik Alanları<br />

typedef bildirimleri için de bilinirlik alanı kuralları geçerlidir. Bir blok içinde tanımlanan bir<br />

typedef ismi, o blok dışında bilinmez.<br />

392

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!