08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

Bir simgesel değişmezin ilki ile özdeş olarak tanımlanmasında herhangi bir sorun çıkmaz.<br />

Bir simgesel değişmez ikinci kez tanımlanmak istenirse önce eski tanımlamayı ortadan<br />

kaldırmak gerekir. Bu işlem #undef önişlemci komutuyla yapılır.<br />

#undef önişlemci komutunun yanına geçerliliği ortadan kaldırılacak simgesel değişmezin<br />

ya da makronun ismi yazılmalıdır:<br />

#undef MAX<br />

#define MAX 20<br />

Yukarıdaki önişlemci komutlatıyla önce MAX simgesel değişmezinin tanımı ortadan<br />

kaldırılıyor, sonra MAX simgesel değişmezi 200 olarak tanımlanıyor. #undef ile<br />

tanımlanması kaldırılmak istenen simgesel değişmez, daha önce tanımlanmış olmasa bile<br />

bu durum bir soruna yol açmaz. Yukarıdaki örnekte, MAX simgesel değişmezi daha önce<br />

tanımlanmamış olsaydı, bu durum bir hataya yol açmazdı.<br />

Önceden Tanımlanmış Simgesel Değişmezler<br />

Standart C dilinde 5 tane simgesel değişmez önceden tanımlanmış kabul edilir. Herhangi<br />

bir başlık dosyası içinde bu simgesel değişmezler #define önişlemci komutuyla<br />

tanımlanmış olmamasına karşın kaynak kodun derleyici tarafından ele alınmasından önce<br />

bir yer değiştirme işlemine sokulurlar. Bu simgesel değişmezler çoğunlukla hata arama<br />

amacıyla yazılan kodlarda kullanılırlar:<br />

__LINE__ öntanımlı simgesel değişmezi<br />

Bu simgesel değişmez kaynak kodun kaçıncı satırında kullanılmış ise, o satırın numarasını<br />

gösteren bir tamsayı değişmezi ile yer değiştirilir.<br />

__FILE__ öntanımlı simgesel değişmezi<br />

Bu simgesel değişmez hangi kaynak dosya içinde kullanılmış ise, o kaynak dosyanın<br />

ismini gösteren bir dizge ifadesiyle yer değiştirilir.<br />

__DATE__ öntanımlı simgesel değişmezi<br />

Bu simgesel derleme tarihini gösteren bir dizge ifadesiyle yer değiştirilir. Tarih bilgisini<br />

içeren yazının formatı aşağıdaki gibidir:<br />

Aaa gg yyyy (ay, gün, yıl)<br />

__TIME__ öntanımlı simgesel değişmezi<br />

Bu simgesel değişmez derleme zamanını gösteren bir dizge ifadesiyle yer değiştirilir.<br />

Zaman bilgisini içeren yazının formatı aşağıdaki gibidir:<br />

sa:dd:ss (saat, dakika, saniye)<br />

__STDC__ öntanımlı simgesel değişmezi<br />

Eğer derleyici standart C derleyicisi ise bu simgesel değişmez tanımlı kabul edilir.<br />

Derleyici standart C derleyicisi değil ise bu simgesel değişmez tanımlanmamış kabul<br />

edilir.<br />

Aşağıdaki programı derleyerek çalıştırın:<br />

# include <br />

int main()<br />

{<br />

printf("kaynak dosya ismi : %s\n", __FILE__);<br />

printf("derleme tarihi = %s\n", __DATE__);<br />

printf("derleme zamani = %s\n", __TIME__);<br />

printf("bu satirin numarasi = %d\n", __LINE__);<br />

#ifdef __STDC__<br />

printf("standart C derleyicisi\n");<br />

499

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

Saved successfully!

Ooh no, something went wrong!