6.P. Problemler
1. Yeni tipler tanımlamak için en az
iki yolunuz vardır. Bir, önişlem esnasında #define
kullanarak; iki, derleme sırasında typedef
anahtar sözcüğünü kullanarak. #define
’ın
typedef
yerine kullanılamayacağı bir örnek verin.
2. Makrolar, karakter dizileri, yani çift tırnak içinde
ise açılmazlar. Ancak makro parametreleri, makro tanımında tırnak içinde
olsalar bile değiştirilebilirler. Standart açıkça bunu yasaklamaktadır ve
bizim önişlemcimiz de bunu yapmamaktadır. Sizinkinin de aynı şeyi yapıp
yapmadığını deneyerek görün ve bu özelliği
kullanan yararlı bir
örnek verin.
3. _ctype
dizisini kullanmadan
ctype.h
dosyasında tanımlanmış bulunan
(…dır) makrolarına eşdeğer
uyarlamalar tanımlayın. Bir örnek aşağıda verilmiştir:is
…
#define isalpha(_c) (((_c)>='A' && (_c)<='Z') || \ ((_c)>='a' && (_c)<='z'))
4. Anahtar sözcükleri Türkçe, Almanca, İtalyanca
veya başka bir dilde olan C programları yazmanızı
sağlayacak #define
’lar yazın.
5. Kullandığınız sistemdeki başlık dosyalarını bulun ve inceleyin. Ne yapıldığını anlamaya çalışın.
6. Aşağıdaki makro tanımda nasıl bir problem bulunmaktadır? Düzeltin.
#define EPSILON = 1E-7
7. Aşağıdaki makroyu program içinde kullanmaya kalktığınızda nasıl bir sonuç alırsınız?
#define fakt(x) ((x)*fakt((x)-1))