- Preprocessor derleyiciden önce çalışan bir programdir. Preprocessor C dilini bilmez, Makina koduna dönüştürme gibi bir yeteneği yoktur. Text düzenleme işlemleri yapmaktadır.
- C'de fonksiyon ve değisken isimlerinin tamamı büyük harfle yazılmaz. Büyük harfle yazılmış bir isim görürsek bunun önişlemciye ilişkin bir atom olduğunu anlarız.
- include anahtar sözcük değildir. Preprocessor #include (replace) işlemini yaptıktan sonra komutu siler. Dolayısıyla derleyici # ile başlayan hiçbir satırı görmeyecektir.
- # null directivedir, hata vermez. Hiçbir şey de yapmaz.
- Belli başlı Preprocessor identifier'ları aşağıdaki gibidir:
#include
- Preprocessor' ün "#include" komutu için yaptigi iş en basitinden kopyala - yapıştır işlemidir. " #include " ile başlayan bir satır gördügünde #include' dan sonraki dosyayi bulur ve #include' un oldugu satırı silerek buraya yapıştırır.
Aşağıda foo.h dosyasının içeriği görülmektedir. header dosyasının içine ekrana çıktı veren bir main fonksiyonu yazılmıştır.
main.c içine ise sadece #include "foo.h" eklenmiştir. Ve görüldüğü gibi ekrana beklenen çıktı verimiştir. Yukarıda bahsedildiği gibi #include kabaca kopyala - yapıştır işlemidir.
- #include :Verilen dosyanın içeriğini bu komutun bulunduğu yere yapıştırılmasını sağlamaktadır. Dolayısıyla #include '' foo.txt '' de yazabiliriz.
- Standart başlık dosyaları derleyicilerin verdiği dosyalar açısal ( < > ) içine alınırken, 3. part başlık (header) dosyaları tırnak ( '' '' ) içine alınmaktadır. Burada bu şekilde bir ayrıma gidilmesinin sebebi koda bakana bir algı oluşturmak amaçlanmıştır.
- Derleyiciler genelde include adında bir klasör bulundururlar ve header dosyaları genelde bunların içinde bulunurlar.
#define
- İyi bir C programcısı Standart kütüphanenin define tanımlamalarının hangi başlık dosyasında define edildiğini bilmesi gerekir.
- Preprocessor komutlarının sonuna " ; " konulmaz. Bazı noktalarda hataya yol açabilmektedir.
- include komutunda preprocessor 'ün çalışma mantığı kodları yapıştırdı, baştan tekrar başladı ve o başlık dosyalarının içinde de komut varsa onları da tekrardan işleyecektir. Bir işlem yaptıktan sonra tekrar baştan başlamaktadır.
- Preprocessor isminin farklı iki değere define edilmesi tanımsız davranıştır.
- Preprocessor de identifier'ın karşılığı olarak bir şey yazılmazsa Preprocessor identifier'ı boş ifadeyle yer değiştirir.
- Preprocessor identifier 'ı belirgin bir ifade olarak istemektedir. Bu nedenle sayısal bir ifadeyi identifier olarak kabul etmemektedir.