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
#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
#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
gcc -o app main.o vector.o ____.o
gcc -o app main.o vector.o matrix.o
Açıklama: matrix.o eklenince tüm modüller bağlanır.