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

defined Önişlemci İşleci<br />

Makrolar konusunda önce önişlemci programın dizge yapma (#) ve atom birleştirme<br />

(##) işleçlerini görmüştük. Önişlemci programın 3. ve son işlei defined işlecidir. defined<br />

önişlemci işlecini bir isim izler. Bu isim ayraç içine de alınabilir:<br />

defined MAX<br />

defined (MAX)<br />

Eğer defined işlecinin terimi olan isimli daha önce tanımlanmış bir simgesel var ise,<br />

defined işleci 1 değeri üretir. Bu isimli bir simgesel değişmez yoksa defined işleci 0 değeri<br />

üretir.<br />

Aşağıdaki örneği inceleyin:<br />

#include <br />

#define MAX 100<br />

int main()<br />

{<br />

#if defined MAX && !defined<br />

printf("max = %d\n", MAX);<br />

#endif<br />

return 0;<br />

}<br />

MIN<br />

#ifdef ve ifndef Önişlemci Komutları<br />

#if önişlemci komutunun kullanıldığı her yerde #ifdef ve #ifndef önişlemci komutları<br />

kullanılabilir:<br />

#ifdef önişlemci komutunu bir isim(identifier) izler. Eğer bu isim daha önce tanımlanmış<br />

bir simgesel değişmeze ilişkinse ilk #else, #elif ya da #endif öneişlemci komutlarına<br />

kadar olan kısım derleyiciye verilir. Eğer #ifdef önişlemci komutunu izleyen isimde bir<br />

simgesel değişmez tanımlı değil ise ilk #else #elif #endif komutuna kadar olan kısım<br />

derleyiciye verilmez. Bu komut ile yapılan iş #if önişlemci komutu ile defined işlecinin<br />

birlikte kullanılmasıyla da yapılabilir:<br />

#ifdef ISIM<br />

gibi bir önişlemci komutu kullanımı ile<br />

#if defined (ISIM)<br />

gibi bir önişlemci komutu aynı anlamdadır.<br />

#ifndef önişlemci komutunu da bir isim(identifier) izler. Eğer bu isimde bir isim daha<br />

önce #define önişlemci komutuyla tanımlanmamış ise, ilk #else, #elif ya da #endif<br />

öneişlemci komutuna kadar olan kısım derleyiciye verilir.<br />

#ifndef önişlemci komutunu izleyen isimde bir simgesel değişmez tanımlanmış ise #else<br />

#elif #endif komutlarına kadar olan kısım derleyiciye verilmez.<br />

#ifndef<br />

SYSTEM<br />

gibi bir önişlemci komutu ile<br />

#if !defined (SYSTEM)<br />

gibi bir önişlemci komutu aynı anlamdadır.<br />

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

497

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

Saved successfully!

Ooh no, something went wrong!