Standart C Programlama Dili


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

#include <conio.h>
#define PI 3.14159265358979323846
#define DEGIS(x,y,tip) { tip t; t = x; x = y; \
  y = t; }
#ifdef EOF
#  define SON EOF
#else
#  define SON (-1)
#endif
#ifndef MAKS
#  define MAKS(p,q) ((p)>(q) ? (p) : (q))
#endif
#define OZEL static
  /* … */
#undef OZEL
#if (HDUZ & 0x40) != 0
  printf("satir = %d\n", __LINE__);
#endif

Bu bölümde hemen her zaman C derleyicisi ile birlikte kullanılan ayrı bir işlemciye 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 da, 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 konulur. Ö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.