Başlık ve Kaynak Dosyaları
Bildirimleri ve kodu ayırın.
Başlık ve Kaynak Dosyaları, CoddyKit'te ücretsiz bir C Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C Academy kursu toplamda 4 dersten oluşur.
Kodu Neden Dosyalara Ayırmalı?
C programları büyüdükçe her şeyi tek bir .c dosyasında tutmak okumayı zorlaştırır ve derlemeyi yavaşlatır.
C, bir projeyi birden çok dosyaya ayırmanıza olanak tanır: Her dosya tek bir sorumluluğu ele alır. Bu, düzeni iyileştirir, kodu yeniden kullanmanıza olanak tanır ve bir bölümü değiştirdiğinizde her şeyi yeniden derlemeniz gerekmediği anlamına gelir.
İki Dosya Türü
Modüler bir C projesinde iki dosya türü kullanılır.
Kaynak dosyaları (.c), gerçek uygulamayı; yani işlev gövdelerini ve tanımları içerir.
Başlık dosyaları (.h), diğer dosyaların bilmesi gereken bildirimleri; yani işlev prototiplerini, tür tanımlarını ve makroları içerir.
Bir Başlık Dosyası
Bir başlık dosyası, neyin var olduğunu nasıl çalıştığını açıklamadan bildirir.
Burada math_utils.h bir add işlevi bildirir. Bu başlık dosyasını dahil eden her dosya işlevin imzasını öğrenir ve onu çağırabilir.
/* math_utils.h */
int add(int a, int b);Eşleşen Kaynak Dosyası
Kaynak dosyası uygulamayı sağlar. Tanımın bildirimle eşleştiğini derleyicinin denetleyebilmesi için kendi başlık dosyasını dahil eder.
Başlık dosyasının tırnak içinde dahil edildiğine dikkat edin; bu biçim kendi projenizin dosyaları için kullanılır.
/* math_utils.c */
#include "math_utils.h"
int add(int a, int b) {
return a + b;
}Modülü Kullanma
Şimdi main.c başlık dosyasını dahil eder ve add işlevini çağırır. İşlev gövdesini hiç görmez, yalnızca prototipi görür.
Derleyici bildirime güvenir; bağlayıcı daha sonra çağrıyı math_utils.c içindeki gerçek uygulamaya bağlar.
/* main.c */
#include <stdio.h>
#include "math_utils.h"
int main(void) {
printf("%d\n", add(2, 3));
return 0;
}Tırnaklar ve Açılı Parantezler
#include yönergesinin iki biçimi vardır.
#include <stdio.h>, sistem ve standart kitaplık başlık dosyaları için açılı parantez kullanır. Derleyici standart dahil etme yollarında arama yapar.
#include "math_utils.h", kendi başlık dosyalarınız için tırnak kullanır ve önce geçerli dizinde arama yapar.
#include <stdio.h> /* standard library */
#include "math_utils.h" /* your project */Başlık Dosyasına Neler Konur
Başlık dosyalarına tanımları değil, bildirimleri koyun.
İyi başlık dosyası içerikleri şunlardır: işlev prototipleri, struct ve typedef bildirimleri, #define makroları ve extern değişken bildirimleri.
İşlev gövdelerini veya değişken tanımlarını buraya koymaktan kaçının; bunlar yinelenen sembol hatalarına yol açabilir.
/* shapes.h */
typedef struct {
double width;
double height;
} Rect;
double rect_area(Rect r);Kaynak Dosyasına Neler Konur
Kaynak dosyası gerçek işi barındırır: işlev tanımları ve dosyaya özel yardımcılar.
Derleyicinin imzaların uyuştuğunu doğrulaması için eşleşen başlık dosyasını dahil eder. Bu, uyuşmazlıkları bağlama zamanına bırakmak yerine erkenden yakalar.
/* shapes.c */
#include "shapes.h"
double rect_area(Rect r) {
return r.width * r.height;
}Bildirim ve Tanım
Bu ayrım, modüler C'nin temelini oluşturur.
Bildirim, bir adın kullanılabilmesi için derleyiciye türünü ve imzasını bildirir: int add(int, int);
Tanım, gerçek varlığı oluşturur; depolama alanı ayırır veya gövdeyi sağlar. Başlık dosyaları bildirir, kaynak dosyaları tanımlar.
int add(int a, int b); /* declaration */
int add(int a, int b) { /* definition */
return a + b;
}Adlandırma Kuralları
Yaygın bir kalıpta her modül, adıyla eşleşen bir çift halinde düzenlenir: logger.h ile logger.c, parser.h ile parser.c.
Bu, bir uygulamanın nerede bulunduğunu açıkça gösterir. İlgili işlevleri tek bir modülde gruplayın; böylece her dosyanın tek ve açık bir sorumluluğu olur.
/* logger.h */
void log_info(const char *msg);
void log_error(const char *msg);Derleme Süreci
Her .c dosyası bağımsız olarak bir nesne dosyasına derlenir, ardından tüm nesne dosyaları tek bir programda bağlanır.
Başlık dosyaları kendi başlarına derlenmez; onları dahil eden kaynak dosyalarına metin olarak eklenir. Derleme akışının tamamını sonraki bir derste inceleyeceğiz.
gcc -c main.c /* -> main.o */
gcc -c math_utils.c /* -> math_utils.o */
gcc main.o math_utils.o -o appKısa Sınama
Başlık ve kaynak dosyalarının rollerini ne kadar iyi anladığınızı sınayın.
Özet
Bir C projesini .h başlık dosyalarına ve .c kaynak dosyalarına ayırmayı öğrendiniz.
Başlık dosyaları neyin var olduğunu bildirir; kaynak dosyaları nasıl çalıştığını tanımlar. Kendi başlık dosyalarınız için tırnak, standart başlık dosyaları için açılı parantez kullanın.
Sırada, bir başlık dosyasının birden fazla kez dahil edilmesinden kaynaklanan sorunları önleyeceğiz.
Sıkça Sorulan Sorular
“Başlık ve Kaynak Dosyaları” dersi ücretsiz mi?
Evet — “Başlık ve Kaynak Dosyaları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C Academy kursu toplamda 4 dersten oluşur.
“Başlık ve Kaynak Dosyaları” dersinde ne öğreneceğim?
Bildirimleri ve kodu ayırın. C Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Başlık ve Kaynak Dosyaları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Başlık ve Kaynak Dosyaları
- Ekleme Koruyucuları
- extern ve Bağlama
- Birden Çok Dosyayı Derleme