Heim >Backend-Entwicklung >C++ >Warum kann ich .cpp-Dateien nicht wie .h-Dateien in C einbinden?
Einbinden von .h- und .cpp-Dateien: Die Unterschiede verstehen
Bei der C-Entwicklung ist das Einbinden anderer Dateien in den Quellcode von entscheidender Bedeutung. Das Einbinden von Header-Dateien (.h) und Implementierungsdateien (.cpp) erfordert jedoch ein gewisses Verständnis.
Beachten Sie den folgenden Code:
main.cpp #include <iostream> #include "foop.h" // Including the header file int main() { int x = 42; std::cout << x << std::endl; std::cout << foo(x) << std::endl; return 0; }
foop.h #ifndef FOOP_H #define FOOP_H int foo(int a); // Declaring the function prototype #endif
foop.cpp #include "foop.h" // Including the header file, just for safety int foo(int a) { return ++a; }
Dieser Code erfolgreich kompiliert, da wir die Header-Datei („foop.h“) sowohl in main.cpp als auch in enthalten haben foop.cpp.
Warum nicht .cpp-Dateien einschließen?
Jetzt wollen wir sehen, was passiert, wenn wir die Zeile „#include „foop.h““ ersetzen main.cpp mit „#include „foop.cpp“:
main.cpp #include <iostream> #include "foop.cpp" // Including the implementation file
Dies führt zu einem Compilerfehler. Warum? Weil das Einfügen einer Implementierungsdatei den darin enthaltenen Code in die aktuelle Quelldatei dupliziert. In unserem Beispiel würde die Funktion „foo“ zweimal definiert: einmal in main.cpp und einmal in foop.cpp , was zum Fehler „Mehrfachdefinition“ führt.
Fazit
Daher ist es wichtig, Header-Dateien einzubinden (.h) sowohl in der primären Quelldatei als auch in allen zusätzlichen Quelldateien, die die deklarierten Funktionen verwenden (.cpp), sollten nur in einer Quelldatei enthalten sein, um doppelte Codedefinitionen zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum kann ich .cpp-Dateien nicht wie .h-Dateien in C einbinden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!