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

#defineBYTE char<br />

#defineBOOL int<br />

BYTE foo(BYTE b);<br />

BOOL isprime(int val);<br />

char türünün aslında 1 byte' lık bir tamsayı türü olduğunu biliyorsunuz. char isminin<br />

kullanılması çoğunlukla yazılarla ya da karakterle ilgili bir iş yapıldığı izlenimini verir.<br />

Oysa bellek blokları üzerinde genel işlemler yapan işlevler de çoğunlukla char türünü<br />

kullanır. Bu durumda yapılan işle ilgili daha fazla bir fikir vermek için, örneğin BYTE ismi<br />

kullanılabilir. C'de BOOL türünün olmadığını hatırlıyorsunuz. C'de bool veri türü yerine<br />

mantıksal bir veri türü olarak int türü kullanılır. Ancak programın okunabilirliğini artırmak<br />

için #define önişlemci komutuyla BOOL ismi kullanılabilir.<br />

Bu kullanıma seçenek olan typedef anahtar sözcüğünü ve yeni tür ismi tanımlamalarını<br />

ileride ele alacağız.<br />

İşlevlerin Simgesel Değişmezlerle Geri Dönmesi<br />

Okunabilirliği artırmaya yönelik bir başka kullanım da işlevlerin geri dönüş değerlerine<br />

yöneliktir. Bazı işlevlerin geri dönüş değerlerinin bir soruya yanıt verdiğini, bazı işlevlerin<br />

geri dönüş değerlerinin de bir işlemin başarısı hakkında fikir verdiğini biliyorsunuz. Böyle<br />

işlevler, geri dönüş değeri ifadeleri yerine simgesel değişmezler kullanırlarsa okunabilirlik<br />

açısından daha iyi olabilir:<br />

return VALID;<br />

return INVALID;<br />

return TRUE;<br />

return FALSE;<br />

return FAILED;<br />

gibi.<br />

İşlevlerin Simgesel Değişmezlerle Çağrılması<br />

Bazı işlevlere de, çağıran kod parçası tarafından simgesel değişmezler gönderilir.<br />

C'nin standart başlık dosyalarında da bu amaçla bazı simgesel değişmezler<br />

tanımlanmıştır. Örneğin stdlib.h başlık dosyası içinde<br />

#defineEXIT_FAILURE 1<br />

#define EXIT_SUCCESS 0<br />

biçiminde tanımlamalar vardır. Yani stdlib.h başlık dosyası kaynak koda eklenirse<br />

EXIT_FAILURE simgesel değişmezi 1, EXIT_FAILURE simgesel değişmezi, 0 yerine<br />

kullanılabilir. Bu simgesel değişmezler, standart exit işlevine yapılan çağrılarda kullanılır:<br />

exit(EXIT_FAILURE);<br />

stdio.h başlık dosyası içinde standart fseek işlevine argüman olarak gönderilmesi<br />

amacıyla üç simgesel değişmez tanımlanmıştır:<br />

#defineSEEK_SET 0<br />

#defineSEEK_CUR 1<br />

#defineSEEK_END 2<br />

Bayrak Değişkenlerin Simgesel Değişmezlerle Değerini Alması<br />

C programlarında, bayrak değişkenleri de çoğunlukla simgesel değişmezlerle değerlerini<br />

alır:<br />

171/529

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

Saved successfully!

Ooh no, something went wrong!