Standart C Programlama Dili


BÖLÜM 6: ÖNİŞLEMCİ

 1. #include <conio.h>
 2. #define PI 3.14159265358979323846
 3. #define DEGIS(x,y,tip) { tip t; t = x; x = y; \
 4.   y = t; }
 5. #ifdef EOF
 6. #  define SON EOF
 7. #else
 8. #  define SON (-1)
 9. #endif
10. #ifndef MAKS
11. #  define MAKS(p,q) ((p)>(q) ? (p) : (q))
12. #endif
13. #define OZEL static
    ...
14. #undef OZEL
15. #if (HDUZ & 0x40) != 0
16.   printf("satir = %d\n", __LINE__);
17. #endif

Bu bölümde hemen her zaman C derleyicisi ile birlikte kullanılan ayrı bir “işlemci”ye göz atacağız. Bu; derlenmeden önce kaynak dosyalarımızı metin yönünden önişlemeye tabi tuttuğu için bu şekilde adlandırılan, C önişlemcisidir. Önişlemciyi, kaynak dosyalarımızı alıp, verilen önişlemci emirlerine göre yeni bir dosya oluşturan bir düzenleyici şeklinde düşünebiliriz. Kabaca durum şöyledir:

( stdio.h + benim.h + prog.c ) ⇒ ÖNİŞLEMCİC DERLEYİCİSİ ⇒ amaç kod

Önişlemci aslında derleyici ile bütünleşmiştir, yani genelde ayrı bir sistem programı değildir.

Bir önişlemci emrini ile sıradan bir C deyimini ne ayırır? İlk olarak, farklı sözdizimi. İkinci olarak ta, satırın başındaki sayı işareti (#). Genelde, emirler bir satır tutarlar; ancak bir satır, sonuna bir ters bölü işareti (\) konularak, bir sonraki satıra devam ettirilebilir. Ayrıca emrin sonunda noktalı virgül olmadığına dikkat edin.

Emirler hiçbir zaman derleyici tarafından görünmezler. Önişlemci, emirleri çıkarıp yerlerine istenen işlemleri yapar. Örneğin, bir #include emri içeren satır yerine emirde belirtilen dosyanın içeriği konur. Önişlemci emirleri herhangi bir satıra konabilirler, ancak önişlemci açıklamaları atladığı için, açıklamaların içine konulamazlar.

Bu bölümün geri kalan kısımlarında, önişlemci emirlerini ayrıntılı olarak açıklayacağız.