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.
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:
Reklam Engelleyici Algılandı!
Lütfen forumun devamlılığı için bu siteye istisna tanıyın veya bağış yapın.
Lütfen forumun devamlılığı için bu siteye istisna tanıyın veya bağış yapın.
Geçiş yap
- Yenidir Forum'a Hoş Geldiniz
- ↳ Forum Kuralları (FORUM RULES)
- ↳ Duyurular
- Yenidir Bilgisayar Ve Teknoloji
- ↳ Bilişim Dünyası
- ↳ Programlama Dilleri
- ↳ Visual Basic
- ↳ C Sharp(#)
- ↳ C
- ↳ C++
- ↳ Java
- ↳ Pascal
- ↳ Access
- ↳ SQL Server
- ↳ Web Tasarım
- ↳ ASP.Net
- ↳ PHP
- ↳ HTML
- ↳ Macromedia
- ↳ Flash
- ↳ Fireworks
- ↳ Dreamweaver
- ↳ Donanım
- ↳ Güvenlik ve Kırıcılık
- ↳ İkinci El
- ↳ Yararlı ve Yardımcı Yazılımlar
- ↳ Sorun giderme
- ↳ Oem Ürün Uyumluluğu ve Performans Yükseltme Yöntemleri
- ↳ İşletim sistemleri Tanıtım ve Kullanım Rehberi
- ↳ Linux
- ↳ Windows
- ↳ Bilgisayar Dünyasındaki Son Gelişmler ve Yenilikler
- ↳ Soru ve Cevap Alanı
- ↳ Bilgisayar
- ↳ Oem ürünler
- ↳ Yazılım
- ↳ Yenidir Teknoloji
- ↳ Genel Teknoloji
- ↳ Yenidir Elektrik-Elektronik
- ↳ Elektrik
- ↳ Elektronik
- ↳ Genel Elektronik
- ↳ Mikrodenetleyiciler(mikrokontroller)
- ↳ mcs51(8051)
- ↳ STM32
- ↳ Arduino
- ↳ Raspbery
- ↳ Risc-v
- ↳ PIC
- ↳ Diğer
- ↳ Tasarım
- ↳ Genel
- ↳ Televizyon
- ↳ Vestel
- ↳ Beko
- ↳ Arçelik
- ↳ Philips
- ↳ Sony
- ↳ Grundig
- ↳ Telefunken
- ↳ Profilo
- ↳ Panasonic
- ↳ Samsung
- ↳ Diğer
- ↳ Digital Uydu Alıcıları (Satallite)
- ↳ Arçelik-Beko
- ↳ Next-NextStar
- ↳ Yumatu
- ↳ Yenidir Cep Telefonu ve Cep Bilgisayarı
- ↳ Cep Telefonu ve Cep Bilgisayarı
- ↳ Symbian
- ↳ Programlar
- ↳ Temalar ve Uygulamalar
- ↳ Symbian S60v5
- ↳ Symbian^3
- ↳ Yenidir Haber Merkezi
- ↳ Teknoloji Haberleri
- ↳ Güncel Haberler
- ↳ Yenidir Internet ve Ağ
- ↳ Site tanıtım
- ↳ Güvenlik
- ↳ Kullanışlı Web Site Hizmetleri
- ↳ Network Tipleri ve Kurulumları
- ↳ Modem Ayarlamaları
- ↳ TCP/İp - Dns
- Yenidir Yaşam ve Sağlık
- ↳ Sağlıklı Yaşam Rehberi
- ↳ Emeklilik,Sosyal Güvence,Sigorta
- ↳ SSK
- ↳ Astronomi ve Fallar
- ↳ Kadınlara Özel Fallar
- ↳ Erkeklere Özel Fallar
- ↳ Yenidir Romantizim ve Güzel Sözler
- ↳ Şiirler
- ↳ Aşk Şiirleri
- ↳ Güzel Sözler
- ↳ Yenidir Tarih,Sanat
- ↳ Sanat
- ↳ Kültür
- ↳ Yenidir Alışveriş
- ↳ Kampanya ve Fırsatlar
- ↳ Tüketici Köşesi
- ↳ Tavsiyeler
- ↳ Tüketici Sorunları
- ↳ Tüketici şikayetleri
- ↳ Ürün tavsiyeleri
- ↳ Yenidir Spor
- ↳ Futbol
- ↳ Turkcell Süperlig
- ↳ Haberler
- ↳ Süper Lig Puan Durumu
- ↳ Süper lig Takımları
- ↳ Galatasaray
- ↳ Fenerbahçe
- ↳ Beşiktaş
- ↳ Trabzonspor
- ↳ Futbolcu Biyografileri
- ↳ Basketbol
- ↳ Diğer Spor Aktiviteleri
- ↳ Dövüş Sporları ve Body Building
- Yenidir Bilgi ve Eğlence Dünyası
- ↳ Yenidir Oyun
- ↳ Bigisayar Oyunları (Online)
- ↳ Silkroad Online
- ↳ World of Warcraft
- ↳ Metin2
- ↳ Metin2 Pvp serverleri
- ↳ Metin2 Hileleri
- ↳ Metin2 Oyun Sorunları ve Çözümleri
- ↳ Metin2 İpuçları
- ↳ Knight Online
- ↳ Hikaye
- ↳ Galaxy Online 2
- ↳ Sorularınız ve Çözümleri
- ↳ Oyun Hakkında İpuçları
- ↳ Birlik Tanıtımları
- ↳ Server 1 :Büyük Ayı
- ↳ Server 2 :Küçük Ayı
- ↳ Bilgisayar Oyunları ve Hileleri
- ↳ Playstation,Nintendo Wii,PSP,PSP Emulatör Oyunları
- ↳ Oyun İncelemeleri ve İlerleme Taktikleri
- ↳ Travian
- ↳ Metin2
- ↳ Knight Online
- ↳ Oyun Demoları ve Tanıtım Videoları
- ↳ Yenidir Forum Oyunları
- ↳ Hikaye
- ↳ Yenidir Eğitim-Öğretim
- ↳ Ödev Arşivi,Sunular,Konu Anlatımları
- ↳ Matematik
- ↳ Matematik
- ↳ Geometri
- ↳ Analitik Geometri
- ↳ Türkçe
- ↳ Türkçe
- ↳ Dil ve Anlatım
- ↳ Türk Edebiyatı
- ↳ Fen ve Teknoloji
- ↳ Fen Bilgisi
- ↳ Teknoloji Dersi
- ↳ Fizik
- ↳ Kimya
- ↳ Biyoloji
- ↳ Sosyal Bilgiler
- ↳ Sosyal Bilgiler
- ↳ Tarih
- ↳ Felsefe
- ↳ Din Kültürü ve Ahlak Bilgisi
- ↳ İnkilap
- ↳ Edebi Eserler
- ↳ 9.Sınıf(Lise 1) Dersleri
- ↳ Edebiyat
- ↳ Biyoloji
- ↳ Matematik
- ↳ Biyoloji
- ↳ Kitap Özetleri
- ↳ İngilizce
- ↳ Paket Programlama Dersleri
- ↳ Coğrafya
- ↳ Kayaçlar
- ↳ Dil ve Anlatım
- ↳ Türk Edebiyatı
- ↳ Tarih
- ↳ Psikoloji
- ↳ Duyurular
- ↳ Eğlence Dünyası
- ↳ Duvar Yazıları
- ↳ Hiç Duydunuz mu?
- ↳ Resim ve Animasyonlar
- ↳ Swf,Gif ve Diğerleri
- ↳ Karikatür
- ↳ Fıkra
- ↳ İgrenç Espriler
- ↳ Gariplik Ve Korku
- ↳ Değişik Şeyler
- ↳ Korku (+18)
- ↳ Diğer
- ↳ Nasıl Olur? Nasıl Yapılır?
- ↳ Hobi Dünyası
- ↳ Origami
- ↳ Hayatın İçinden
- ↳ Hikaye
- ↳ Yenidir Müzik ve Video
- ↳ Türkçe Pop,Rock,Klasik
- ↳ En Yeniler
- ↳ Top 10
- ↳ Alternatif Müzik
- ↳ R&B
- ↳ Dans,Techno,House
- ↳ Metal Müzik
- ↳ Yabancı Kategori
- ↳ En Yeniler
- ↳ Top 10
- ↳ Rihanna
- Diğer
- ↳ Diğer
- ↳ Serbest Kürsü