Ana sayfa > Programlama > C++ Programlama > Başlık dosyaları

Başlık dosyaları

Programa başlık dosyası dahil etme

Başlık dosyasının kullanımını bir örnek üzerinde incelemeye çalışalım:


#include <iostream> // Başlık dosyası

using namespace std;

int main(void)
{
    cout << "C++ Programlama Dili";
    return 0;
}

Yukarıdaki programı derleyip çalıştırdığımızda, ekrana aşağıdaki cümleyi yazar:

C++ Programlama Dili

Başlık dosyası kavramını yukarıdaki örnek üzerinden incelemeye çalışalım:


#include <iostream> // Başlık dosyası

Yukarıdaki satırda, kullanılan #include önişlemci direktifi, sağ tarafında yer alan <iostream> adlı başlığı program içine dahil etmemiz gerektiğini bildirir. Bu sayede, derleme işlemi başladığında, <iostream> başlık içeriği program içinde yazılmış gibi kullanılabilir hale gelir.

Böylece, <iostream> başlık dosyasını programımıza dahil ederek, std isim alanını dolayısıyla da cout komutunu programımızda kullanabilme olanağına sahip oluyoruz.

Önişlemci direktifleri C++ programlarında yer alırlar ancak işlem satırı olarak işlem görmezler. Programın derlenme safhasından önce işlem görürler. Başka bir deyişle, derleme başlamadan önişlemci direktifinin gerektirdiği işlemler tamamlanmış olur.

Başlık ve kütüphane dosyası

Şimdi başlık dosyası ile kütüphane fonksiyonlarının arasındaki bağlantıyı incelemeye çalışalım. Bir başlık dosyasını programımıza dahil ettiğimizde, o başlık dosyasının bilgilerini içerdiği kütüphane fonksiyonu, sizin programınız içinde yazılmış gibi kullanıma hazır olacaktır. Başlık dosyalarının programlara dahil edilmesi için ise #include önişlemci direktifi kullanılır. #include direktifi, önişlemcinin adı verilen başlık dosyasını okumasını ve bu dosyada geçen kütüphane fonksiyonlarını kullanım için hazır bulundurmasını sağlar.

Bu sistemde, kullanılmakta olan C/C++ derleyicileri ve IDE'leri hazırlanırken, ANSI standartlarına göre tanımlanmış olan bazı temel fonksiyonlar ile çok sık kullanılabileceği tahmin edilen ve günün ihtiyaçlarına göre miktarı değişebilen, IDE üreticileri tarafından hazırlanan fonksiyonlar, "Kütüphane Dosyaları" adı verilen ve .LIB uzantılı dosyalara yerleştirilir. Bu dosyalar derleyicinin belirli bir alt dizinine (genellikle lib adlı) yerleştirilir.

Kütüphane dosyaları içinde yer alan fonksiyonlara Kütüphane Fonksiyonları adı verilir.

Kütüphane fonksiyonlarının programlarda kullanılabilmesi için, fonksiyonlar hakkındaki başlık bilgileri, C++ derleyicisinin bir alt dizininde (genelde include adlı) bulunan ve uzantısı .H olan dosyalara yerleştirilmiştir. Bu dosyalara Başlık Dosyaları adı verilir.

C++'da kullanılan standart kütüphane içinde yer alan kütüphaneler:

  • Standart fonksiyon kütüphanesi: C'de kullanılan ve C++ programlama dilinde de desteklenen standart C kütüphaneleri
  • Sınıf kütüphanesi: C++ programlama diline ait nesneye yönelik fonksiyon kütüphaneleri ile Standard Template Library (STL)

Başlık dosyası tanımlama yöntemleri

C++ dilinde 2 farklı başlık tanımlama yöntemi kullanılabilir:


#include <iostream> // Normal başlık dosya tanımlaması
 
#include <stdio.h> // .h uzantılı başlık dosya tanımlaması

Öncelikle, .h uzantılı olmayan başlık dosyaları, yoksa .h uzantılı başlık dosyaları kullanılmalıdır.

Bir program içinde bir veya daha fazla başlık dosyası tanımlayabiliriz.

Başlık dosya tanımlamalarında bazen < > bazen de " " işaretleri kullanılabilir. Genellikle, derleyici ile birlikte gelen başlık dosyaları için < > işaretleri, kullanıcı tarafından tanımlanan ve derleyicinin ilk olarak .cpp uzantılı kaynak dosya ile aynı dizinde arama yapmasını sağlayan " " işaretleri kullanılır.


#include <iostream> // Derleyici ile gelen başlık dosyası

#include "eklenen.h" // Kullanıcı tanımlı başlık dosyası

Kullanıcı tanımlı başlık dosyasının kullanımını bir örnek üzerinde incelemeye çalışalım. Aşağıda gösterilen main.c, fonksiyonlar.cpp ve fonksiyonlar.h isimli üç adet dosya deneme adlı bir proje içinde yer almaktadır.

main.cpp kod dosyası


#include <iostream> // std isim alanı ile birlikte cout fonksiyonunun kullanılmasını sağlar.
/* fonksiyonlar.h başlık dosyası içinde bildirimi yapılan ve ana kodları fonksiyonlar.cpp
dosyasında yer alan fonksiyonların main.c dosyası içinde kullanımını sağlar. */
#include "fonksiyonlar.h"

using namespace std;

int main(void)
{
  int id;

  cout << "C++ Programlama Dili" << "\n";

  id = kare_al(5);

  cout << "id değişkeninin karesi: " << id;

  return 0;
}

fonksiyonlar.cpp kod dosyası


int kare_al(int id)
{
  return id*id;
}

fonksiyonlar.h başlık dosyası


int kare_al(int id);

Yukarıdaki programı derleyip çalıştırdığımızda, ekrana aşağıdaki cümleyi yazar:

C++ Programlama Dili
id değişkeninin karesi: 25

Projeyi derlediğimizde, main.cpp dosyası başında yer alan #include "fonksiyonlar.h" ifadesi, fonksiyonlar.h başlık dosyası içinde bildirimi yapılan ve ana kodları fonksiyonlar.cpp dosyada yer alan fonksiyonların main.cpp dosyası içinde kullanımını sağlar. Böylece, program main.cpp dosyası içinde fonksiyonlar.cpp dosyası içinde yer alan kare_al() fonksiyonunu kullanarak, 5 sayısının karesini alır.