Heim > Artikel > Backend-Entwicklung > 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; }
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; }
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!