0Pricing
C Academy · Ders

Çok Dosyalı Projeler

Üst bilgi dosyaları ve çeviri birimleri

Çok Dosyalı Projeler, CoddyKit'te ücretsiz bir C Academy dersidir. Bu, 4 dersinin 2. 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.

Dosyalar Neden Ayrılır

Gerçek programlar tek bir .c dosyasında bulunmaz. Kodu birden fazla dosyaya ayırmak:

  • İlişkili işlevleri birlikte gruplar
  • Derleyicinin yalnızca değişenleri yeniden derlemesini sağlar
  • Kodun projeler arasında yeniden kullanılmasını sağlar
  • Bir ekibin sürekli çakışmalar yaşamadan çalışmasına olanak tanır

Parçaların nasıl bağlandığını anlamak çok önemlidir.

Çeviri Birimleri

Her .c dosyası, ön işleyici kendi #include ifadelerini genişlettikten sonra bir çeviri birimine dönüşür.

Derleyici her çeviri birimini bağımsız olarak bir nesne dosyasına (.o) dönüştürür. Bu aşamada diğer dosyalar hakkında bilgisi yoktur.

Bildirim ve Tanım Arasındaki Fark

Bir bildirim, derleyiciye bir işlevin var olduğunu ve imzasını söyler. Bir tanım ise gerçek gövdeyi sağlar.

Diğer dosyaların bir işlevi çağırmak için yalnızca bildirime ihtiyacı vardır. Tanım tam olarak tek bir yerde bulunur.

int add(int a, int b);          /* declaration: a promise */

int add(int a, int b) {         /* definition: the body */
    return a + b;
}

Başlık Dosyası

Bildirimler bir başlık (.h) içine yazılır. İşlevi kullanmak isteyen her dosya başlığı ekler.

Başlık genel arayüzdür; karşılık gelen .c dosyası özel uygulamadır.

/* math_utils.h */
#ifndef MATH_UTILS_H
#define MATH_UTILS_H

int add(int a, int b);
int mul(int a, int b);

#endif

Uygulama Dosyası

.c dosyası kendi başlığını ekler ve işlevleri tanımlar.

Kendi başlığınızı eklemek, derleyicinin tanımların bildirimlerle eşleştiğini doğrulamasını sağlar.

/* math_utils.c */
#include "math_utils.h"

int add(int a, int b) { return a + b; }
int mul(int a, int b) { return a * b; }

Modülü Kullanma

Başka bir dosya başlığı ekler ve işlevleri çağırır. İşlev gövdelerini görmesi hiçbir zaman gerekmez.

Derleyici bildirimlere güvenir; bağlayıcı daha sonra çağrıları gerçek tanımlara bağlar.

/* main.c */
#include <stdio.h>
#include "math_utils.h"

int main(void) {
    printf("%d\n", add(2, 3));
    return 0;
}

Derleme ve Bağlama

İki aşama vardır. Önce her dosyayı -c ile bir nesne dosyasına derleyin. Ardından nesneleri tek bir çalıştırılabilir dosyada bağlayın.

Bağlayıcı, math_utils.o içinde tanımını bularak add çağrısını çözümler.

gcc -c main.c          # -> main.o
gcc -c math_utils.c    # -> math_utils.o
gcc main.o math_utils.o -o app

Tırnak İşaretleri ve Açılı Ayraçlar

Ekleme söz dizimi arama yolunu denetler:

  • #include "math_utils.h" önce proje dizininizde arama yapar
  • #include <stdio.h> yalnızca sistem ekleme yollarında arama yapar

Kendi başlıklarınız için tırnak işaretlerini, standart kitaplık için açılı ayraçları kullanın.

extern Anahtar Sözcüğü

Bir genel değişkeni dosyalar arasında paylaşmak için onu bir .c dosyasında bir kez tanımlayın ve başlıkta extern ile bildirin.

extern, 'bu değişken başka bir yerde var' anlamına gelir ve yinelenen tanımları önler.

/* in config.h */
extern int g_verbose;   /* declaration */

/* in config.c */
int g_verbose = 0;      /* the single definition */

static Anahtar Sözcüğü

Dosya kapsamı düzeyinde static, bir işlevi veya değişkeni kendi çeviri birimine ait özel hâle getirir.

Statik bir yardımcı işlev diğer dosyalardan bağlanamaz; böylece ad çakışmaları önlenir ve uygulama ayrıntıları gizlenir. C dilinde bir şeyi dahili olarak işaretlemenin yolu budur.

/* visible only inside this .c file */
static int helper(int x) {
    return x * 2;
}

Tek Tanım Kuralı

Statik olmayan bir işlev veya global, programın tamamında tam olarak bir kez tanımlanabilir. Bunu birçok dosyada bildirebilir, ancak tek bir dosyada tanımlayabilirsiniz.

add için iki tanım, multiple definition of 'add' gibi bir bağlayıcı hatasına neden olur. Gövdelerin başlık dosyalarında bulunmamasının nedeni budur.

Kısa Kontrol

Bir başlık dosyasına nelerin ait olması gerektiği üzerine düşünün.

Özet

Artık birden çok dosyadan oluşan bir projeyi yapılandırabilirsiniz:

  • Her .c dosyası, bağımsız olarak bir .o dosyasına derlenen bir çeviri birimidir
  • Başlık dosyaları bildirimleri içerir; her tanım tek bir .c dosyasında bulunur
  • Bağlayıcı, nesne dosyaları arasındaki çağrıları çözümler
  • extern global değişkenleri paylaşır; static dosyaya özgü simgeleri gizli tutar

Sırada: Makefile'larla derlemeyi otomatikleştirmek var.

Sıkça Sorulan Sorular

“Çok Dosyalı Projeler” dersi ücretsiz mi?

Evet — “Çok Dosyalı Projeler” 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.

“Çok Dosyalı Projeler” dersinde ne öğreneceğim?

Üst bilgi dosyaları ve çeviri birimleri 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 2. dersidir.

“Çok Dosyalı Projeler” 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

  1. Koşullu Derleme
  2. Çok Dosyalı Projeler
  3. Makefile'lar
  4. Statik ve Paylaşılan Kitaplıklar
← C Academy Sayfasına Dön