#define Ve #include Önişlemci Tanımlamaları
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:
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,
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
yada
ş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ı
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 <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.