C de başlık dosyalarının görevleri

Moderatör: yashin

quaint
Genel Yetkili Adayı
Mesajlar: 189
Kayıt: 11 Tem 2009 19:46
İletişim:

C de başlık dosyalarının görevleri

Mesaj gönderen quaint »

C dilinde başlık dosyalarının (header files / .h uzantılı dosyalar) temel görevi, kodunuzun farklı bölümleri veya farklı kaynak dosyaları (.c dosyaları) arasında bir köprü ve iletişim arayüzü sağlamaktır.

Derleyiciye, projenizde kullanacağınız fonksiyonların, değişkenlerin veya veri yapılarının "neye benzediğini" önceden bildirirler.

Başlık dosyalarının üstlendiği ana görevleri şu şekilde özetleyebiliriz:

1. Fonksiyon Bildirimleri (Prototipler)
C dilinde bir fonksiyonu kullanmadan önce derleyiciye o fonksiyonun adını, hangi türde parametreler aldığını ve geriye ne döneceğini (return tipi) söylemeniz gerekir. Başlık dosyaları bu bildirimleri içerir.

Örneğin: stdio.h dosyasını eklediğinizde, derleyiciye printf() fonksiyonunun nasıl kullanılacağını tanıtmış olursunuz.

2. Kodun Yeniden Kullanılabilirliği (Reusability)
Yazdığınız popüler fonksiyonları veya veri yapılarını her .c dosyasına tek tek kopyalamak yerine, bir .h dosyasına yazarsınız. İhtiyacı olan her kaynak dosyasına #include "dosya.h" yazarak aynı kodu zahmetsizce tekrar kullanabilirsiniz.

3. Makrolar ve Sabitlerin Tanımlanması
Proje genelinde kullanılacak sabit değerleri (#define PI 3.14) veya makroları başlık dosyalarında tanımlayarak, tüm projede tek bir merkezden yönetilmesini sağlarsınız.

4. Kodun Organize Edilmesi ve Okunabilirlik
Büyük projelerde kodun "ne yaptığını" (Arayüz / Interface) ile "nasıl yaptığını" (Uygulama / Implementation) birbirinden ayırır:

.h dosyası: Sadece vitrindir. Hangi fonksiyonların var olduğunu gösterir.

.c dosyası: Mutfağıdır. Fonksiyonların gerçek kod blokları (gövdeleri) burada yazılır.

Küçük Bir Örnekle Görelim
Bir matematik kütüphanesi yazdığınızı düşünelim:

matematik.h (Başlık Dosyası - Sadece Bildirim yapar)

C
#ifndef MATEMATIK_H
#define MATEMATIK_H

// Fonksiyon prototipi
int topla(int a, int b);

#endif
matematik.c (Kaynak Dosya - İşi yapan kod)

C
#include "matematik.h"

int topla(int a, int b) {
return a + b; // Fonksiyonun gerçek gövdesi
}
main.c (Ana Program)

C
#include <stdio.h>
#include "matematik.h" // Kendi başlık dosyamızı ekledik

int main() {
int sonuc = topla(5, 3); // Derleyici topla() fonksiyonunu matematik.h sayesinde tanır.
printf("Sonuc: %d", sonuc);
return 0;
}
Özetle: Başlık dosyaları olmasaydı, yazdığınız her fonksiyonu veya kullanacağınız her kütüphane elemanını her .c dosyasının başına tek tek elle yazmak zorunda kalırdınız. Başlık dosyaları bizi bu hamallıktan kurtarır.
Reklam Engelleyici Algılandı!
Lütfen forumun devamlılığı için bu siteye istisna tanıyın veya bağış yapın.

“C” sayfasına dön