Heim > Backend-Entwicklung > C++ > Hauptteil

C++-Kompilierungsfehler: Der Compiler unterstützt nicht mehrere Definitionen mit unterschiedlichen Typen. Wie kann man ihn lösen?

王林
Freigeben: 2023-08-22 11:03:32
Original
1600 Leute haben es durchsucht

C++-Kompilierungsfehler: Der Compiler unterstützt nicht mehrere Definitionen mit unterschiedlichen Typen. Wie kann man ihn lösen?

Beim Schreiben von Programmen in C++ können Kompilierungsfehler auftreten. Einer der häufigsten Fehler ist „Der Compiler unterstützt nicht mehrere Definitionen unterschiedlicher Typen“. Bei diesem Fehler handelt es sich normalerweise um mehrere Variablen oder Funktionen, die in unterschiedlichen Dateien oder an unterschiedlichen Stellen in derselben Datei definiert sind und deren Typen nicht übereinstimmen, was dazu führt, dass der Compiler nicht bestimmen kann, welche Definition verwendet werden soll. In diesem Artikel werden die Ursache und Lösung dieses Fehlers erläutert.

1. Fehlerursache

In C++ können Variablen oder Funktionen in verschiedenen Dateien oder an verschiedenen Orten in derselben Datei definiert werden. Wenn mehrere Definitionen vorhanden sind, muss der Compiler bestimmen, welche verwendet werden soll. Wenn mehrere Definitionen unterschiedliche Typen haben, kann der Compiler nicht bestimmen, welche Definition verwendet werden soll, und meldet einen Fehler.

Zum Beispiel werden eine Variable mit dem Namen x und eine Funktion mit dem Namen y in einem Programm definiert:

// file1.cpp
int x = 1;

// file2.cpp
double y() { return 2.0; }
Nach dem Login kopieren

In diesem Beispiel ist der Typ von x int und der Typ von y ist double. Wenn während der Kompilierung file1.cpp und file2.cpp gleichzeitig enthalten sind, meldet der Compiler die Fehlermeldung „Der Compiler unterstützt nicht mehrere Definitionen mit unterschiedlichen Typen“.

2. Lösung

Um dieses Problem zu lösen, müssen wir das Schlüsselwort extern verwenden, um diese Variablen oder Funktionen zu deklarieren, damit sie in anderen Dateien verwendet werden können.

In file1.cpp müssen Sie die y-Funktion mit extern deklarieren, damit der Compiler weiß, dass die y-Funktion in einer anderen Datei definiert ist und den Rückgabetyp der y-Funktion korrekt analysieren kann. Ebenso muss in file2.cpp die x-Variable mit extern deklariert werden. Der geänderte Code sieht folgendermaßen aus:

// file1.cpp
extern double y();

int x = 1;

// file2.cpp
extern int x;

double y() { return 2.0; }
Nach dem Login kopieren

In diesem Beispiel wird das Schlüsselwort extern verwendet, um dem Compiler mitzuteilen, dass diese Variablen oder Funktionen in anderen Dateien definiert sind. Auf diese Weise kann der Compiler zur Kompilierungszeit ihre Typen korrekt auflösen und so den Fehler „Der Compiler unterstützt nicht mehrere Definitionen mit unterschiedlichen Typen“ vermeiden.

3. Zusammenfassung

Wenn in C++ mehrere Definitionen auftreten und die definierten Typen unterschiedlich sind, meldet der Compiler die Fehlermeldung „Der Compiler unterstützt nicht mehrere Definitionen mit unterschiedlichen Typen“. Um dieses Problem zu lösen, müssen wir diese Variablen oder Funktionen mit dem Schlüsselwort extern deklarieren, damit wir sie in anderen Dateien verwenden können. Auf diese Weise kann der Compiler zur Kompilierungszeit ihre Typen korrekt auflösen und so Fehler vermeiden.

Das obige ist der detaillierte Inhalt vonC++-Kompilierungsfehler: Der Compiler unterstützt nicht mehrere Definitionen mit unterschiedlichen Typen. Wie kann man ihn lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!