Basit programlar tek bir dosyaya yerleştirilebilir, ancak programınız büyüdüğünde, hepsini tek bir dosyada tutmak imkansı olmakta.

Bir programın parçalarını ayrı bir dosyaya taşıyabilir, ardından bir başlık dosyası oluşturabilirsiniz .

Bir başlık dosyası normal bir C dosyası gibi görünür, ancak bunun .hyerine ile biter .cve işlevlerinizin ve bir programın diğer bölümlerinin uygulamaları yerine, bildirimleri tutar .

printf()İşlevi veya diğer G / Ç işlevini ilk kullandığınızda zaten başlık dosyalarını kullandınız ve şunu yazmanız gerekiyordu:

#include <stdio.h>

kullanmak için.

#includebir önişlemci yönergesidir.

Önişlemci gidip stdio.hdosyayı standart kitaplıkta arar , çünkü etrafında köşeli parantezler kullandınız. Kendi başlık dosyalarınızı eklemek için, aşağıdaki gibi tırnak işaretleri kullanacaksınız:

#include "myfile.h"

Yukarıdakiler myfile.hgeçerli klasörde bakacaktır .

Kitaplıklar için bir klasör yapısı da kullanabilirsiniz:

#include "myfolder/myfile.h"

Bir örnek verelim. Bu program, belirli bir yıldan beri geçen yılları hesaplar:

#include <stdio.h>

int calculateAge(int year) {
  const int CURRENT_YEAR = 2020;
  return CURRENT_YEAR - year;
}

int main(void) {
  printf("%u", calculateAge(1983));
}

calculateAgeİşlevi ayrı bir dosyaya taşımak istediğimi varsayalım .

Bir calculate_age.cdosya oluşturuyorum :

int calculateAge(int year) {
  const int CURRENT_YEAR = 2020;
  return CURRENT_YEAR - year;
}

Ve gövde hariç, dosyadaki işlevle aynı olan işlev prototipinicalculate_age.h koyduğum bir dosya :.c

int calculateAge(int year);

Şimdi ana .cdosyada calculateAge()fonksiyon tanımına gidip kaldırabiliriz ve içe aktarabiliriz calculate_age.h, bu da calculateAge()fonksiyonu kullanılabilir hale getirir:

#include <stdio.h>
#include "calculate_age.h"

int main(void) {
  printf("%u", calculateAge(1983));
}

Birden fazla dosyadan oluşan bir programı derlemek için hepsini komut satırında şu şekilde listelemeniz gerektiğini unutmayın:

gcc -o main main.c calculate_age.c