Yazan : Şadi Evren ŞEKER

Bilgisayar bilimlerinde, işlemcideki çalışmadan önce yapılacak işleri ifade etmek için kullanılan bir terimdir. Çoğu programlama dili açısından, programın çalışması aşamasına geçilmeden önce (run-time) yapılacak işleri belirtir.

Genellikle bir betik (macro) şeklinde kayıtlı olarak dosyada duran ve programın derlenmesi aşamasından (compile time) önce veya sonra, ama çalıştırılmadan önce yapılan işleri ifade eder.

En çok kullanıldığı yerlerden birisi C dilidir. C dilindeki # işaretiyle başlayan satırların tamamı ön işlem komutlarıdır.

Örneğin “#include <stdio.h>” satırı, kodun derlenmesi aşamasından önce, kodun satırları işlenmeden önce, stdio kütüphanesini (standart input output) sisteme dahil eder.

Bu sayede stdio kütüphanesinde bulunan örneğin printf gibi fonksiyonları kullanabiliriz.

C dilindeki diğer bir ön işlem ise #define satırıdır. Örneğin

#define PI 3

Şeklindeki bir satırdan sonra, kodumuzdaki bütün PI değişkeni geçen değerler 3 olarak kabul edilir. Aslında buradaki işlem, derleme aşamasına geçilmeden önce, koddaki bütün PI ifadelerini 3 değeri ile değiştirmek anlamındadır.

Diğer meşhur ön işlem satırlarından birisi de #ifndef ve #endif ikilisidir. Özellikle bir başlık dosyasının (header file) kodlamasında kullanılan bu satırlar, şayet daha öncede tanımlı bir değer bulunmuyorsa ifndef satırı altına geçilmesini sağlar. Özellikle birden fazla yerden aynı anda #include edilen kütüphanelerde redefinition (tekrar tanımlama) hatasına düşmemek için kullanılır.

Örneğin bir header (.h) dosyası yazmak istiyoruz ve ismi de diyelim ki BilgisayarKavramları.h olsun. Bu dosyanın içerisinde tek satır bulunsun ve :

int a = 10;

yazıyor olsun. BilgisayarKavramları.h dosyasını her include eden dosyada a değişkeni otomatik olarak tanımlı olacaktır. Bu durumda örneğin X.c dosyamızdan include edilen bir BilgisayarKavramları.h bulunsun bir de Y.h dosyasından benzer şekilde include edilme söz konusu olsun.

Şayet X.c dosyası ilave olarak Y.h dosyasını da include ederse, bu durumda X.c dosyası, Y.h içerisinde bulunan BilgisayarKavramları.h dosyasını da include etmiş olacak. Bu problemin çözümü için BilgisayarKavramları.h dosyasının içeriğini tek seferde çalışacak şekilde ayarlamamız gerekiyor. Bunu da derleyicinin, dosya içeriğine sadece bir kere girmesini sağlayan ifndef satırı ile yapıyoruz. Bu durumda dosyamızın içeriği aşağıdaki şekilde olabilir:

#ifndef BilgisayarKavramları

#define BilgisayarKavramları

int a = 10;

#endif

Yukarıdaki yeni dosyada, ilk include işleminden sonra BilgisayarKavramları değeri artık tanımlı olacak ve diğer include edilme durumlarında bir daha ifndef satırı geçilmeyerek a değişkenin tek sefer tanımlanması sağlanacaktır.

Yorumlar

  1. Fatih

    Hocam merhaba,
    bir sayının alfanumerik olup olmadığını kontrol eden makroyu, doğru şekilde nasıl yazabiliriz?
    teşekkürler

levent oturak için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir