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

Yukarıdaki örnekte Date isimli yapı türünün day ve month isimli elemanları Days ve<br />

Months isimli numaralandırma türlerindendir.<br />

Numaralandırma Değişmezleri Değişmez İfadesi Olarak<br />

Kullanılabilir<br />

Bir numaralandırma değişmezi bir değişmez ifadesi (constant expression) oluşturur. Bu<br />

yüzden numaralandırma değişmezleri değişmez ifadesi gereken yerlerde kullanılabilir.<br />

Aşağıdaki kodu inceleyin:<br />

enum {MIN_SIZE = 100, AVERAGE_SIZE = 500, MAX_SIZE = 1000};<br />

void func()<br />

{<br />

int a[MIN_SIZE];<br />

int b[AVERAGE_SIZE];<br />

int c[MAX_SIZE];<br />

/***/<br />

}<br />

Yukarıdaki main işlevinin içinde tanımlanan a, b ve c isimlerinin boyutları numalandırma<br />

değişmezleri ile belirlenmiştir. Numaralandırma değişmezlerin switch deyiminin case<br />

ifadeleri olarak kullanılmaları çok sık karşılaşılan bir durumdur:<br />

Renk renk;<br />

/***/<br />

switch (renk) {<br />

case SINEK: /***/<br />

case KARO : /***/<br />

case KUPA : /***/<br />

case MACA : /***/<br />

}<br />

Numaralandırma Türleri ile #define Değişmezlerinin<br />

Karşılaştırılması<br />

#define önişlemci komutu önişlemci programa ilişkindir. Fakat numaralandırma<br />

değişmezleri derleme aşamasında ele alınır.<br />

Bir #define simgesel değişmezi için bilinirlik alanı diye bir kavram söz konusu değildir,<br />

çünkü bilinirlik alanı derleyicinin anlamlandırdığı bir kavramdır. Ancak numaralandırma<br />

türleri ve değişmezleri için bilinirlik alanı kuralları geçerlidir. Eğer bir numaralandırma<br />

türü, bir işlev içinde bildirilmişse bu türe ilişkin numaralandırma değişmezleri söz konusu<br />

işlevin dışında bilinmez.<br />

Birden fazla #define simgesel değişmezi, mantıksal bir ilişki içinde kullanılsa bile,<br />

derleyici bu ilişkinin farkında olmaz. Bu yüzden, derleyici programın, bu simgesel<br />

değişmezlerin yanlış kullanımına ilişkin bir uyarı iletisi üretme şansına sahip olmaz. Ancak<br />

derleyici aynı tür kapsamında bildirilen numaralandırma değişmezlerinin arasındaki<br />

mantıksal ilişkinin farkındadır. Bunların yanlış kullanılması durumunda uyarı iletisi<br />

üretebilir.<br />

Numaralandırma değişmezleri de #define komutuyla tanımlanmış simgesel değişmezler<br />

gibi, nesne belirtmez. Örneğin :<br />

enum METAL {Demir, Bakir, Kalay, Cinko, Kursun};<br />

/***/<br />

Kalay = 3; /* Geçersiz */<br />

424

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

Saved successfully!

Ooh no, something went wrong!