Heim >Backend-Entwicklung >C++ >Warum sollte ich Header-Dateien (.h) anstelle von Implementierungsdateien (.cpp) in C einbinden?
Einbinden von .cpp-Dateien: Ein Fall von Funktionsduplizierung
Bei der Entwicklung in C wird im Allgemeinen empfohlen, Header (.h) einzuschließen. Dateien für die Funktionalität statt Implementierungsdateien (.cpp). Das Einschließen von .cpp-Dateien kann aufgrund von Funktionsduplizierungen zu Fehlern führen.
Betrachten wir das folgende Codebeispiel:
// main.cpp #include <iostream> #include "foop.h" // Header file containing the function declaration int main() { std::cout <p>Dieser Code wird korrekt kompiliert und ausgeführt, da die Header-Datei (.h) Enthält nur die Deklaration der foo()-Funktion, während die Definition in der separaten .cpp-Datei bereitgestellt wird.</p> <p>Allerdings, wenn wir die Header-Datei ersetzen Einbindung in main.cpp mit der Einbindung der .cpp-Datei:</p> <pre class="brush:php;toolbar:false">// main.cpp #include <iostream> #include "foop.cpp" // Implementation file containing the function definition</iostream>
Dies führt zu einem Compilerfehler:
multiple definition of foo(int) first defined here
Dies liegt daran, dass der Präprozessor den Inhalt der eingebundenen Datei kopiert in die Hauptquelldatei. Durch das Einbinden der .cpp-Datei wird die foo()-Funktionsdefinition effektiv in main.cpp kopiert, was zu einer doppelten Definition der Funktion führt.
Um eine Funktionsduplizierung zu vermeiden, wird empfohlen, Header-Dateien (.h) einzubinden nur für Deklarationen und .cpp-Dateien für Definitionen. Dadurch wird sichergestellt, dass Funktionen nur einmal im Programm definiert werden.
Das obige ist der detaillierte Inhalt vonWarum sollte ich Header-Dateien (.h) anstelle von Implementierungsdateien (.cpp) in C einbinden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!