Standart C Programlama Dili


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 is (…dır) makrolarına eşdeğer uyarlamalar tanımlayın. Bir örnek aşağıda verilmiştir:

#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))