Heim >Backend-Entwicklung >C++ >Warum kann ich .cpp-Dateien nicht wie .h-Dateien in C einbinden?

Warum kann ich .cpp-Dateien nicht wie .h-Dateien in C einbinden?

Linda Hamilton
Linda HamiltonOriginal
2024-11-29 19:39:11584Durchsuche

Why Can't I Include .cpp Files Like I Include .h Files in C  ?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn