Kaynak Dosyaları
Coddy'nin C Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 3 / 61.
Şimdiye kadar işlev bildirimlerini başlık dosyalarına yerleştirdik, ancak gerçek işlev kodu (tanım) ana dosyada bulunuyordu. Modüler programlamadaki bir sonraki adım, bu tanımları kendi kaynak dosyalarına (.c dosyalarına) taşımaktır.
Bu, üç bölümden oluşan temiz bir yapı oluşturur: üst bilgi dosyası işlevleri bildirir, ayrı bir kaynak dosyası bunları tanımlar ve main bunları basitçe kullanır. Şöyle görünür:
// 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 edin. 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 gerekir; add işlevinin dahili olarak nasıl çalıştığını bilmesine gerek yoktur.
Bu ayrım, uygulama ayrıntılarını gizli tutar ve bu işlevleri kullanan dosyalara dokunmadan işlev mantığını değiştirmenize olanak tanır.
Görev
KolayKodunuzu 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 main dosyası.
Üç dosya oluşturacaksınız:
math_ops.h: İki işlem için fonksiyon bildirimlerini içeren başlık dosyanız:multiplyvesubtract. Her iki fonksiyon da iki tamsayı alır ve bir tamsayı döndürür.MATH_OPS_Hsembolünü kullanarak koruma eklemeyi unutmayın.math_ops.c:multiplyvesubtractfonksiyonlarının gerçek uygulamalarını içeren kaynak dosyanız. Bildirimlerin tanımlarla eşleşmesini sağlamak 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 kullanan main dosyanız.
multiply fonksiyonu iki tamsayının çarpımını, subtract ise birinci tamsayıdan ikinci tamsayının çıkarılmasıyla elde edilen sonucu döndürmelidir.
İki tamsayı girdisi alacaksınız: a ve b.
main fonksiyonunuzda her iki işlemin sonuçlarını ayrı satırlara yazdırın:
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, sonucu sakla
// TODO: subtract fonksiyonunu a ve b ile çağır, sonucu sakla
// TODO: Sonuçları şu formatta yazdır:
// Çarpım: {multiply sonucu}
// Fark: {subtract 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