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

int a[N];<br />

gibi bir tanımlama yapıldığını düşünelim. Önişlemci bu tanımlamayı<br />

a[= 100];<br />

biçimine getirir ki bu da geçersizdir.<br />

#define önişlemci komutu satırını yanlışlıkla ';' atomu ile sonlandırmak bir başka tipik<br />

hatadır.<br />

#defineN 100;<br />

Bu durumda önişlemci N gördüğü yere<br />

100;<br />

yerleştirir.<br />

int a[N];<br />

tanımlaması<br />

int a[100;];<br />

haline gelir. Bu tanımlama geçersizdir. Bu tür hatalarda genellikle derleyici, simgesel<br />

değişmez kaç yerde kullanılmışsa o kadar hata iletisi verir.<br />

Simgesel değişmezlerin tanımlanmasında dikkatli olunmalıdır. Önişlemci modülünün<br />

herhangi bir şekilde aritmetik işlem yapmadığı, yalnızca metinsel bir yer değiştirme<br />

yaptığı unutulmamalıdır:<br />

#define MAX 10 + 20<br />

int main()<br />

{<br />

int result;<br />

result = MAX * 2;<br />

printf("%d\n", result);<br />

}<br />

return 0;<br />

Yukarıdaki örnekte result değişkenine 60 değil 50 değeri atanır. Ancak önişlemci komutu<br />

#define MAX (10 + 20)<br />

biçiminde yazılsaydı , result değişkenine 60 değeri atanmış olurdu.<br />

Standart C İşleçlerine İlişkin Basit Makrolar<br />

Kaynak metnin yazıldığı ISO 646 gibi bazı karakter setlerinde '&', '|', '^' karakterleri<br />

olmadığından, bazı C işleçlerinin yazımında sorun oluşmaktadır.<br />

C89 standartlarına daha sonra yapılan eklemeyle dile katılan iso646 başlık dosyasında,<br />

standart bazı C işleçlerine dönüştürülen basit makrolar tanımlanmıştır. Aşağıda bu<br />

makroların listesi veriliyor:<br />

174/529

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

Saved successfully!

Ooh no, something went wrong!