Mehrere Definitionen von „wat“ in einem C-Projekt
Der angegebene Code besteht aus vier Dateien: FileA.cpp, FileA.h, FileB.cpp und FileB.h. Beim Kompilieren tritt ein Fehler mit der Meldung „mehrfache Definition von „wat““ auf.
FileB.h definiert eine Ganzzahlvariable mit dem Namen „wat“ wie folgt:
#ifndef FILEB_H_ #define FILEB_H_ int wat; void world(); #endif /* FILEB_H_ */
Seit dieser Header-Datei sowohl in FileA.cpp als auch in FileB.cpp enthalten ist, erkennt der Compiler, dass „wat“ mehrfach definiert wird. Dies liegt daran, dass das Makro FILEB_H_ nicht in allen Header-Dateien richtig definiert ist.
Um dieses Problem zu beheben, sollten die Header-Dateien wie folgt geändert werden folgt:
FileA.h:
#ifndef FILEA_H_ #define FILEA_H_ #include "FileB.h" void hello(); #endif /* FILEA_H_ */
FileB.h:
#ifndef FILEB_H_ #define FILEB_H_ extern int wat; // Declare 'wat' as external void world(); #endif /* FILEB_H_ */
FileB .cpp:
#include "FileB.h" int wat = 0; // Define 'wat' with its initial value void world() { // More code }
Durch die Verwendung von „extern“ in FileB.h informieren wir den Compiler darüber, dass „wat“ an anderer Stelle definiert ist und dass er nicht in der aktuellen Datei nach seiner Definition suchen soll. Die tatsächliche Definition von „wat“ wird dann in FileB.cpp bereitgestellt, wodurch der Fehler bei mehreren Definitionen vermieden wird.
Das obige ist der detaillierte Inhalt vonWarum erzeugt mein C-Code den Fehler „Mehrfache Definition von „wat'' und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!