Heim > Backend-Entwicklung > C++ > Warum erzeugt mein C-Code den Fehler „Mehrfache Definition von „wat'' und wie kann ich ihn beheben?

Warum erzeugt mein C-Code den Fehler „Mehrfache Definition von „wat'' und wie kann ich ihn beheben?

Barbara Streisand
Freigeben: 2024-12-04 03:56:10
Original
1028 Leute haben es durchsucht

Why Does My C   Code Produce a

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

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

FileB.h:

#ifndef FILEB_H_
#define FILEB_H_

extern int wat;  // Declare 'wat' as external
void world();


#endif /* FILEB_H_ */
Nach dem Login kopieren

FileB .cpp:

#include "FileB.h"

int wat = 0;  // Define 'wat' with its initial value
void world()
{
    // More code
}
Nach dem Login kopieren

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!

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