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 />

seçilmiş text dosyalarında toplanırlar. "h" uzantısı "header" sözcüğünün baş harfinden<br />

gelir.<br />

Bir modülden faydalanan bir kaynak dosya o modülün başlık dosyasını #include önişlemci<br />

komutuyla eklerler. Böylece tüm bildirimleri derleyici görmüş olur.<br />

O modüle ilişkin tanımlamalar ise .c uzantılı ayrı bir dosya içinde yer alır. Bu tanımlamalar<br />

global değişkenlerin tanımlamaları ve işlevlerin tanımlamalarıdır. Teknik olarak bu<br />

dosyaya "kod dosyası" (implementation file) denir. Projede çalışan bir programcı modülün<br />

ara yüzünü değiştirmeden, modülün kodunu yani kaynak dosyayı değiştirirse, projede bu<br />

modülü kullanan programcıların, kendi kodlarında bir değişiklik yapmaları gerekmez.<br />

Böylece önce modüller ilişkin arayüzler belirlenir ve bu arayüzlere bağlı olarak kaynak<br />

dosyalar yazılırsa, kaynak dosyada bir değişim olsa da, bu kaynak dosyadaki işlevleri<br />

çağıran modüllerde bir değişiklik yapılması gerekmez.<br />

Static Anahtar Sözcüğünün İşlev Bildirimlerinde ya da<br />

Tanımlarında Kullanılması<br />

İşlevler da global varlıklardır. Bir modüldeki bazı işlevler dışarıya hizmet vermek için<br />

tanımlanır. Bu işlevler modülün arayüzünde yani başlık dosyasında bildirilmelidir. Ancak<br />

modülde yer alan modülün kendi iç işleyişinde görev yapan işlevler, dışarıya doğrudan<br />

hizmet vermez. Bu işlevler, kodlama dosyasında static anahtar sözcüğü ile bildirilir ve<br />

tanımlanırl. Bu durumda static anahtar sözcüğü, işlevin geri dönüş değerinin türünden<br />

önce yazılır:<br />

static int func(int);<br />

Tür Niteleyicileri<br />

C de const ve volatile olmak üzere iki tür niteleyicisi vardır.<br />

[C99 standartlarıyla restrict anahtar sözcüğüyle yeni bir tür niteleyicisi eklenmiştir.]<br />

const Belirleyicisi<br />

const belirleyicisi, ilkdeğer atandıktan sonra nesnenin içeriğinin değiştirilemeyeceğini<br />

anlatır. const belirleyicisi yerel, global değişkenlerle ve işlevlerin parametre<br />

değişkenleriyle birlikte kullanılabilir. const anahtar sözcüğü ile tanımlanan bir nesneye<br />

atama işleci ile atama yapılması geçersizdir:<br />

const double PI = 3.14159265 /* Geçerli. İlkdeğer verme. */<br />

int main()<br />

{<br />

const int i = 10;<br />

i = 100; /* Geçersiz */<br />

}<br />

return 0;<br />

Yerel bir değişken const belirleyicisi ile tanımlanacaksa ilkdeğer verilmelidir, ilkdeğer<br />

verilmezse const belirleyicisi kullanmanın bir anlamı kalmaz. Aşağıdaki örneği inceleyin:<br />

void func ()<br />

{<br />

const int a; /* anlamsız */<br />

/*…*/<br />

}<br />

Bu örnekte a yerel bir değişken olduğundan bir çöp değere sahiptir. Değişkenin değeri bir<br />

daha değiştirilemeyeceğine göre böyle bir tanımlamanın da bir anlamı olamaz.<br />

351

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

Saved successfully!

Ooh no, something went wrong!