Hemen bütün C derleyicileri, özel önişlemci emirlerini tanıyan bir önişlemciyi yapılarında bulundururlar.
Önişlemci emirleri, bir bakıma, C derleyicisinin girdisini, yani kaynak kodu, kontrol etmede kullanılır. Bir önişlemci emrinin ilk karakteri her zaman numara
işaretidir (#) ve kaynak programda satırın ilk karakteri olmalıdır. Normalde, önişlemci emirlerinin çoğu, kaynak programın başına, bildirimlerden önce yazılır.
C programlarında çokça kullanıldıkları için, bu bölümde sadece #define ve #include önişlemci emirleri anlatılmaktadır. Diğer önişlemci emirlerinin daha detaylı bir anlatımı Bölüm 6’da verilmektedir.
#define emri şu şekildedir:
#define tanıtıcı_sözcük karakter_dizisi
Bu tür bir #define emri, emirden sonra gelen program deyimlerinde tanıtıcı_sözcük bulunan her yerde, onun yerine karakter_dizisinin konulacağını gösterir. Örneğin,
#define XYZ 100
emri, daha sonra, XYZ’nin her rastlandığı yerde 100 konulmasını sağlar. Program içinde kullanılacak değişmezleri tanımlamanın yaygın bir yolu da budur. #define emirleriyle tanımlanan tanıtıcı sözcüklerin büyük harfle yazılması alışılagelmiştir.
#include
#include emri ya
#include “dosya_adı”
yada
#include <dosya_adı>
şeklinde olur ve önişlemciye #include satırının yerini, belirtilen dosyanın alacağını gösterir. Eğer dosya_adı çift tırnak içine alınmışsa, o zaman önişlemci, dosyayı kaynak program dosyasının saklandığı altdizinde arar. Eğer dosya_adı açılı parantezler içinde ise, o zaman dosya, böyle #include emirleri için aramaların yapıldığı “standart” altdizin(ler)de aranır. Normalde, bu include altdizini olur.
#include emri, daha önceden hazırlanan, standart veya kullanıcı tarafından tanımlanan dosyalarda saklanan, sık kullanılan veri ve fonksiyon bildirimlerini programa dahil etmede kullanılır. Böyle dosyalara başlık dosyaları adı verilir ve isimleri dosyaadi.h şeklinde olur.
Örnek
test.h dosyası
void test() {
int num = 15;
printf(“%d t”, num); /* prints 15 */
printf(“0x%x t”, num); /* prints 0xf */
printf(“0%o n”, num); /* prints 017 (octal) */
num = 0xf;
printf(“%d t”, num); /* prints 15 */
printf(“0x%x t”, num); /* prints 0xf */
printf(“0%o n”, num); /* prints 017 (octal) */
num = 017;
printf(“%d t”, num); /* prints 15 */
printf(“0x%x t”, num); /* prints 0xf */
printf(“0%o “, num); /* prints 017 (octal) */
}
main.h dosyası
#include <stdio.h>
#include <stdlib.h>
#include “test.h”
int main(int argc, char** argv) {
test();
return (EXIT_SUCCESS);
}
Kendi kütüphane dosyanızı (*.h) yazmak isterseniz şuradaki bilgiler işinize yarayabilir.