CodeBlanks Logo Icon CodeBlanks

Header dosyaları

  • C kursu
  • Başlangıç
  • Ders 110/116
  • 5 dk

Kendi header dosyanı oluşturmayı öğrenirsin.

Header dosyaları ve include guard

Bir header dosyası (.h) bildirimleri taşır; .c dosyaları tanımları içerir. Tekrar eklenmeyi önlemek için include guard kullanılır.

#ifndef CONFIG_H
#define CONFIG_H

#define MAX_USERS 10

#endif

Burada CONFIG_H bir kez tanımlandığında, dosya ikinci kez eklenirse içeriği atlanır. Bu, çok dosyalı projelerde aynı bildirimin iki kez derlenmesini önler. #pragma once da benzer amaca hizmet eder ama standart değildir; en güvenli yol include guard kullanmaktır.

Header ve kaynak dosya ayrımı

Bir .h dosyası bildirileri, .c dosyası tanımları içerir. Bu ayrım büyük projelerde derleme sürelerini kısaltır.

/* math_utils.h */
#ifndef MATH_UTILS_H
#define MATH_UTILS_H
int add(int a, int b);
#endif

/* math_utils.c */
#include "math_utils.h"
int add(int a, int b) { return a + b; }

Burada .h dosyası sadece add'in imzasını verir; .c ise gövdeyi yazar. Bu sayede başka dosyalar math_utils.h'i ekleyip add'i kullanabilir; math_utils.c sadece bir kez derlenir.

Uygulama CONFIG_H guard ile MAX_USERS yazdır

#ifndef CONFIG_H, #define CONFIG_H, #define MAX_USERS 10, #endif ile bir include guard bloğu yaz. main içinde printf ile MAX_USERS değerini yazdır.

Başlangıç kodu

main.c
#include <stdio.h>

// CONFIG_H dahil etme koruyucusu ile MAX_USERS 10 tanımla
int main(void) {
    // printf ile MAX_USERS değerini yazdır
    return 0;
}

Örnek çözüm

main.c
#ifndef CONFIG_H
#define CONFIG_H
#define MAX_USERS 10
#endif
printf("%d\n", MAX_USERS);

Beklenen çıktı

10

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Include guard (#ifndef/#define/#endif) ne işe yarar?

  • Programı hızlandırır
  • Bir başlığın iki kez eklenmesini önler Doğru cevap
  • Kodu gizler
  • Derleme süresini sıfırlar

Açıklama: Include guard bir başlığın iki kez eklenmesini önler.

2 Dosya türü ve içerik eşleştir

Kavram Anlamı
.h dosyası Bildiriler
.c dosyası Tanımlar
include guard İki kez eklemeyi önler
#endif Bloğu bitirir

3 Boşluğu doldur: include guard

Soru
____ CONFIG_H
#define CONFIG_H
#define MAX_USERS 10
#endif
Cevap
#ifndef CONFIG_H
#define CONFIG_H
#define MAX_USERS 10
#endif

Açıklama: #ifndef ile başlayan blok include guard oluşturur.

Başlangıç bölümündeki tüm dersler