Kaynak Dosyaları
Coddy'nin C Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 3 / 61.
Şimdiye kadar fonksiyon bildirimlerini başlık dosyalarına yerleştirdik, ancak gerçek fonksiyon kodu (tanım) ana dosyada bulunuyordu. Modüler programlamadaki bir sonraki adım, bu tanımları kendi kaynak dosyalarına (.c dosyaları) taşımaktır.
Bu, üç parçadan oluşan temiz bir yapı oluşturur: başlık dosyası fonksiyonları bildirir, ayrı bir kaynak dosyası bunları tanımlar ve main yalnızca bunları kullanır. İşte görünümü:
// math_utils.h
#ifndef MATH_UTILS_H
#define MATH_UTILS_H
int add(int a, int b);
#endif
// math_utils.c
#include "math_utils.h"
int add(int a, int b) {
return a + b;
}
// main.c
#include <stdio.h>
#include "math_utils.h"
int main() {
printf("%d\n", add(5, 3));
return 0;
}
math_utils.c dosyasının kendi başlık dosyasını içerdiğine dikkat et. Bu, işlev tanımının bildirimle eşleşmesini sağlar; eşleşmezlerse derleyici hatayı yakalar. Ana dosyanın işlevi kullanmak için yalnızca başlık dosyasını içermesi yeterlidir; add işlevinin içeride nasıl çalıştığını bilmesi gerekmez.
Bu ayrım, uygulama ayrıntılarını gizli tutar ve bu işlevleri kullanan dosyalara dokunmadan işlevlerin mantığını değiştirmeni sağlar.
Görev
KolayKodunu uygun üç dosyalı yapıda düzenleyerek basit bir matematik yardımcı programı oluşturalım: bildirimler için bir başlık dosyası, uygulamalar için bir kaynak dosyası ve bunları kullanan bir ana dosya.
Üç dosya oluşturacaksın:
math_ops.h: İki işlem için fonksiyon bildirimlerini içeren başlık dosyan:multiplyvesubtract. Her iki fonksiyon da iki tam sayı alır ve bir tam sayı döndürür.MATH_OPS_Hsembolünü kullanarak koruma eklemeyi unutma.math_ops.c:multiplyvesubtractfonksiyonlarının gerçek uygulamalarını içeren kaynak dosyan. Bildirimlerin tanımlarla eşleştiğinden emin olmak için bu dosya kendi başlık dosyasını içermelidir.main.c: Başlık dosyasını içeren ve hesaplamaları yapmak için her iki fonksiyonu da kullanan ana dosyan.
multiply fonksiyonu iki tam sayının çarpımını döndürmeli, subtract ise ilk tam sayıdan ikinci tam sayıyı çıkarmanın sonucunu döndürmelidir.
İki tam sayı girdisi alacaksın: a ve b.
Ana fonksiyonunda her iki işlemin sonucunu ayrı satırlara yazdır:
Product: {result of multiply}
Difference: {result of subtract}Örneğin, girdiler 8 ve 3 olduğunda çıktı şöyle olur:
Product: 24
Difference: 5Kendin dene
#include <stdio.h>
#include "math_ops.h"
int main() {
int a, b;
scanf("%d", &a);
scanf("%d", &b);
// TODO: multiply fonksiyonunu a ve b ile çağırın, sonucu saklayın
// TODO: subtract fonksiyonunu a ve b ile çağırın, sonucu saklayın
// TODO: Sonuçları şu biçimde yazdırın:
// Çarpım: {multiply fonksiyonunun sonucu}
// Fark: {subtract fonksiyonunun sonucu}
return 0;
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Modüler Programlama Temelleri
Başlık DosyalarıInclude Guard'larKaynak DosyalarıStatik FonksiyonlarÖzet: Modüler Hesap Makinesi4Kapsülleme
Opaque Pointer KavramıOpaque Struct TanımlamaGetter ve Setter MetotlarıSetter Metotlarında DoğrulamaÖzet: Gizli Kutu2Nesneler ve Metotlar
Nesne Olarak Struct'lar'Self' İşaretçisiConst Doğruluğuİşaretçi vs DeğerYardımcı MetotlarÖzet: Point Manager5Proje: Basit Banka Hesabı
Proje KurulumuHesabın Oluşturulması3Nesne Yaşam Döngüsü
Constructor DeseniDestructor DeseniStack İlklendirmeDerin KopyalamaÖzet: String Wrapper6Kompozisyon Yoluyla Kalıtım
Struct Gömmeİlk Üye KuralıÜst Üyelere ErişimUpcastingÖzet: Şekil HiyerarşisiKendi başına pratik yap: Online C derleyicisi