CodeBlanks Logo Icon CodeBlanks

Birden çok modül

  • C kursu
  • Orta seviye
  • Ders 63/116
  • 5 dk

Birden çok modülü tek projede birleştirmeyi öğrenirsin.

Birden çok modül

Büyük bir C projesi modüllere bölünür. Her modülün bir .h ve bir .c dosyası vardır. Örneğin vector.h/vector.c ve matrix.h/matrix.c. main.c her iki header'ı ekler ve fonksiyonları çağırır.

Derleme: gcc -c vector.c ve gcc -c matrix.c ayrı .o üretir, sonra gcc -o app main.o vector.o matrix.o ile birleştirilir. Makefile bu adımları otomatikleştirir. Modüler yapı, derleme süresini azaltır; yalnızca değişen modül yeniden derlenir. Bu, gerçek dünyadaki C projelerinin standart yapısıdır.

Modül tasarımı

İyi bir modül tek bir sorumluluk taşır. vector modülü yalnızca vektör işlemleri yapar; matrix modülü matris işlemleri yapar. Header, modülün genel API'sini açıklar; .c dosyası uygulama detayını gizler. static ile iç yardımcılar dosya-dışı görünmez.

Modüller arası bağımlılık mümkün olduğunca tek yönlü olmalı. Örneğin matrix, vector'a bağlı olabilir ama tersi olmamalı. Döngüsel bağımlılık tasarım köküsüdür; modülleri yeniden böl. Bu disiplin, büyük projelerde bakımı kolaylaştırır.

Uygulama İki modüllü program simüle et

Tek dosyada iki modülü simüle et: int vec_add(int a, int b) { return a + b; } ve int vec_mul(int a, int b) { return a * b; } fonksiyonlarını yaz. int main(void) içine printf("%d \n", vec_add(2, 3)); ve printf("%d\n", vec_mul(4, 5)); ekle. <stdio.h> başlığını unutma.

Başlangıç kodu

main.c
#include <stdio.h>

// vec_add ve vec_mul fonksiyonlarını yaz

int main(void) {
    // vec_add(2, 3) ve vec_mul(4, 5) çağır ve yazdır
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

int vec_add(int a, int b) {
    return a + b;
}
int vec_mul(int a, int b) {
    return a * b;
}

int main(void) {
    printf("%d \n", vec_add(2, 3));
    printf("%d\n", vec_mul(4, 5));
    return 0;
}

Beklenen çıktı

5 
20

Soru ve cevaplar

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

1 Modül dosyalarını eşle

Kavram Anlamı
vector.h Vektör bildirimleri
vector.c Vektör tanımları
vector.o Derlenmiş nesne
main.c Program girişi

2 gcc -c ne yapar?

  • Çalıştırılabilir üretir
  • Bağlama yapar
  • Header ekler
  • Sadece derler, .o üretir Doğru cevap

Açıklama: -c sadece derler, bağlamaz; .o dosyası bırakır.

3 Bağlama komutunu tamamla

Soru
gcc -o app main.o vector.o ____.o
Cevap
gcc -o app main.o vector.o matrix.o

Açıklama: matrix.o eklenince tüm modüller bağlanır.

Orta seviye bölümündeki tüm dersler