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
#endifBurada 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
#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
#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
____ CONFIG_H
#define CONFIG_H
#define MAX_USERS 10
#endif
#ifndef CONFIG_H
#define CONFIG_H
#define MAX_USERS 10
#endif
Açıklama: #ifndef ile başlayan blok include guard oluşturur.