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) stand in der Hauptdatei. Der nächste Schritt in der modularen Programmierung besteht darin, diese Definitionen in eigene Quelldateien (.c-Dateien) zu verschieben.
Dadurch entsteht eine klare Struktur aus drei Teilen: Die Headerdatei deklariert Funktionen, eine separate Quelldatei definiert sie, und main verwendet sie einfach. So sieht das 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. Stimmen sie nicht überein, 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 von Funktionen zu ändern, ohne Dateien anzupassen, die diese Funktionen verwenden.
Aufgabe
EinfachErstellen wir ein einfaches Mathematik-Hilfsprogramm, indem du deinen Code in der richtigen Struktur aus drei Dateien organisierst: eine Headerdatei für Deklarationen, eine Quelldatei für Implementierungen und eine main-Datei, die sie verwendet.
Du erstellst drei Dateien:
math_ops.h: Deine Headerdatei mit Funktionsdeklarationen für zwei Operationen:multiplyundsubtract. Beide Funktionen nehmen zwei Ganzzahlen entgegen und geben eine Ganzzahl zurück. Vergiss nicht, Include-Guards mit dem SymbolMATH_OPS_Hzu verwenden.math_ops.c: Deine Quelldatei mit den tatsächlichen Implementierungen vonmultiplyundsubtract. Diese Datei sollte ihren eigenen Header einbinden, damit Deklarationen und Definitionen übereinstimmen.main.c: Deine main-Datei, die den Header einbindet und beide Funktionen für Berechnungen verwendet.
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 main-Funktion die Ergebnisse beider Operationen in separaten Zeilen aus:
Product: {result of multiply}
Difference: {result of subtract}Bei den Eingaben 8 und 3 würde die Ausgabe beispielsweise 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 Funktion multiply mit a und b auf und speichere das Ergebnis
// TODO: Rufe die Funktion subtract mit a und b auf und speichere das Ergebnis
// TODO: Gib die Ergebnisse in folgendem 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