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
Barbara StreisandOriginal
2024-12-04 03:56:101096Durchsuche

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_ */

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!

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