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
Freigeben: 2024-11-29 19:39:11
Original
660 Leute haben es durchsucht

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;
}
Nach dem Login kopieren
foop.h
#ifndef FOOP_H
#define FOOP_H

int foo(int a);  // Declaring the function prototype

#endif
Nach dem Login kopieren
foop.cpp
#include "foop.h"  // Including the header file, just for safety

int foo(int a) {
  return ++a;
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage