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

için de geçerlidir. Ancak programcı tarafından yapılan bir tür bildiriminin yinelenmesi,<br />

bildirimler özdeş olsa bile geçersizdir:<br />

struct A {<br />

/****/<br />

};<br />

struct A {<br />

/****/<br />

};<br />

Yukarıdaki örnekte struct A isimli yapının bildirimi ikinci kez yapıldığında derleyici<br />

program bir hata iletisi verir. Bir örnek de standart kütüphaneden verelim:<br />

time.h isimli standart başlık dosyasında struct tm isimli bir yapının bildirildiğini<br />

biliyorsunuz. Eğer bir kodlama dosyası içine time.h başlık dosyasının içeriği iki kez<br />

boşaltılırsa, kodlama dosyaısnın derlenmesi aşamasında hata oluşur. Çünkü struct tm<br />

yapısı iki kez bildirilmiş olur.<br />

Proje geliştirilmesi süresinde böyle hataların giderilmesi fazladan zaman kaybına yol<br />

açar. Önişlemci koşullu derleme komutlarıyle bu konuda bir önlem alınabilir. C ve C++<br />

dillerinde başlık dosyaları çoğunlukla aşağıdaki biçimde hazırlanır:<br />

//header1.h<br />

#ifndef _HEADER1_H_<br />

#define _HEADER1_H_<br />

#endif<br />

Bu başlık dosyası bir kaynak dosya tarafından ilk kez eklendiğinde _HEADER1_H_<br />

simgesel değişmezi henüz tanımlanmış olmadığından #endif önişlemci komutuna kadar<br />

olan kısım derleyiciye verilir. Ancak daha sonra bu başlık dosyası bir kez daha kaynak<br />

koda eklenmek istenirse artık _HEADER1_H simgesel değişmezi tanımlanmış olduğundan<br />

#endif önişlemci komutuna kadar olan kısım artık kaynak koda verilmez.<br />

Koşullu Derlemeye İlişkin Önişlemci Komutları Nerelerde<br />

Kullanılır?<br />

1. Koşullu derleme komutları sıklıkla debug amacıyla kullanılır.<br />

Program yazılırken debug amacıyla programa bazı kodlar eklenir. Ancak programın son<br />

sürümünde hata aramaya yönelik kodların bulunması istenmez. Çünkü bu kodların<br />

programın çalışma zamanında getireceği ek maliyet istenmez.<br />

Program içindeki belirli kod parçalArı yalnızca debug sürümüde derlenir:<br />

#if DEBUG<br />

/***/<br />

#endif<br />

2. Bazı programların birden fazla işletim sisteminde çalışması istenebilir. Kaynak kodun<br />

belirli kısımları önişlemci program tarafından işletim sistemine göre seçilerek derleyiciye<br />

verilir:<br />

#if defined(WINDOWS)<br />

/***/<br />

#elif defined (DOS)<br />

/***/<br />

#elif defined(OS2)<br />

/***/<br />

#endif<br />

501

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

Saved successfully!

Ooh no, something went wrong!