Quelldateien
Teil des Abschnitts Objektorientierte Programmierung der C-Journey von Coddy. Lektion 3 von 61.
Bisher haben wir Funktionsdeklarationen in Header-Dateien platziert, aber der eigentliche Funktionscode (die Definition) befand sich in der Hauptdatei. Der nächste Schritt in der modularen Programmierung besteht darin, diese Definitionen in eigene Quelldateien (.c-Dateien) zu verschieben.
Dies erstellt eine klare Struktur aus drei Teilen: Der header deklariert functions, eine separate Quelldatei definiert sie, und main verwendet sie einfach. So sieht es aus:
// 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;
}
Beachte, dass math_utils.c seinen eigenen Header einbindet. Dadurch wird sichergestellt, dass die Funktionsdefinition mit der Deklaration übereinstimmt. Falls sie nicht übereinstimmen, erkennt der Compiler den Fehler. Die Hauptdatei muss nur den Header einbinden, um die Funktion zu verwenden; sie muss nicht wissen, wie add intern funktioniert.
Diese Trennung hält Implementierungsdetails verborgen und ermöglicht es dir, die Logik einer Funktion zu ändern, ohne Dateien anzufassen, die diese Funktionen verwenden.
Aufgabe
EinfachErstelle ein einfaches Mathe-Hilfsprogramm, indem du deinen Code in die passende Struktur aus drei Dateien aufteilst: eine Header-Datei für Deklarationen, eine Quelldatei für Implementierungen und eine Hauptdatei, die sie verwendet.
Du erstellst drei Dateien:
math_ops.h: Deine Header-Datei mit Funktionsdeklarationen für zwei Operationen:multiplyundsubtract. Beide Funktionen akzeptieren zwei Ganzzahlen und geben eine Ganzzahl zurück. Vergiss nicht, Include-Guards mit dem SymbolMATH_OPS_Hzu verwenden.math_ops.c: Deine Quelldatei mit den eigentlichen Implementierungen vonmultiplyundsubtract. Diese Datei sollte ihren eigenen Header einbinden, um sicherzustellen, dass Deklarationen und Definitionen übereinstimmen.main.c: Deine Hauptdatei, die den Header einbindet und beide Funktionen verwendet, um Berechnungen durchzuführen.
Die Funktion multiply sollte das Produkt zweier Ganzzahlen zurückgeben, und subtract sollte die erste Ganzzahl minus der zweiten zurückgeben.
Du erhältst zwei ganzzahlige Eingaben: a und b.
Gib in deiner Hauptfunktion die Ergebnisse beider Operationen in separaten Zeilen aus:
Product: {result of multiply}
Difference: {result of subtract}Beispielsweise würde die Ausgabe bei den Eingaben 8 und 3 so aussehen:
Product: 24
Difference: 5Probier es selbst
#include <stdio.h>
#include "math_ops.h"
int main() {
int a, b;
scanf("%d", &a);
scanf("%d", &b);
// TODO: Rufe die multiply-Funktion mit a und b auf und speichere das Ergebnis
// TODO: Rufe die subtract-Funktion mit a und b auf und speichere das Ergebnis
// TODO: Gib die Ergebnisse im folgenden Format aus:
// Produkt: {Ergebnis von multiply}
// Differenz: {Ergebnis von subtract}
return 0;
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der modularen Programmierung
Header-DateienInclude GuardsQuelldateienStatische FunktionenWiederholung: Modularer Taschenrechner4Kapselung
Konzept der Opaque PointersOpaque Structs definierenGetter und SetterValidierung in SetternRückblick: Die geheime Box2Objekte und Methoden
Structs als ObjekteDer 'Self'-PointerConst-CorrectnessPointer vs. WertHilfsmethodenZusammenfassung: Point Manager5Projekt: Einfaches Bankkonto
Projekt-SetupImplementierung des Kontos3Objekt-Lebenszyklus
Konstruktor-MusterDestruktor-MusterStack-InitialisierungTiefe KopieRückblick: String-Wrapper6Vererbung durch Komposition
Struct-EinbettungDie First-Member-RegelZugriff auf Parent-MemberUpcastingRückblick: Formenhierarchie9Projekt: Formen-Zeichner
ProjektübersichtKreis-ImplementierungRechteck-ImplementierungPolymorphe VerwendungShape-ContainerÜbe selbstständig: Online-C-Compiler