Heim > Backend-Entwicklung > C++ > Wie behebt man den C++-Kompilierungsfehler: „Neudefinition von ‚Funktion''?

Wie behebt man den C++-Kompilierungsfehler: „Neudefinition von ‚Funktion''?

王林
Freigeben: 2023-08-27 14:27:13
Original
1901 Leute haben es durchsucht

解决C++编译错误:'redefinition of 'function'',如何解决?

C++-Kompilierungsfehler beheben: „Neudefinition von ‚Funktion‘“, wie kann man ihn lösen?

C++ wird als leistungsstarke Programmiersprache häufig in der Softwareentwicklung eingesetzt. Allerdings ist es für Anfänger nicht einfach, fehlerfreie C++-Programme zu schreiben. Einer der häufigsten Fehler ist die „Neudefinition von ‚Funktion‘“, bei der es sich um einen Funktionsneudefinitionsfehler handelt. In diesem Artikel erkläre ich die Ursachen dieses Fehlers und wie man ihn beheben kann.

Fehlergrund:
Wenn wir eine Funktion mit demselben Namen in einem C++-Programm definieren, meldet der Compiler einen Fehler „Neudefinition von ‚Funktion‘“. Dieser Fehler tritt normalerweise in den folgenden Situationen auf:

  1. Die gleiche Funktion wird mehrmals in derselben Quelldatei definiert.
  2. Die gleiche Funktion ist in verschiedenen Quelldateien definiert und diese Quelldateien sind mit demselben Programm verknüpft.

Sehen Sie sich das folgende Beispiel an:

// example.cpp

int add(int a, int b)
{
    return a + b;
}

int add(int a, int b) // 重复定义相同的函数
{
    return a + b;
}

int main()
{
    int result = add(3, 4);
    return 0;
}
Nach dem Login kopieren

Im obigen Beispiel haben wir eine Funktion namens „add“ zweimal in derselben Quelldatei definiert. Wenn wir versuchen, dieses Programm zu kompilieren, stoßen wir auf den Fehler „Neudefinition von ‚add‘“.

Lösung:
Es gibt zwei Hauptmethoden, um Funktionsneudefinitionsfehler zu beheben: Eine besteht darin, die mehrfache Definition derselben Funktion in derselben Quelldatei zu vermeiden. Die andere besteht darin, Funktionsdeklarationen zu verwenden, wenn dieselbe Funktion in verschiedenen Quelldateien und Headern definiert wird Dateien, um Konflikte zu vermeiden.

  1. Vermeiden Sie es, dieselbe Funktion mehrmals in derselben Quelldatei zu definieren.
// example.cpp

int add(int a, int b)
{
    return a + b;
}

int main()
{
    int result = add(3, 4);
    return 0;
}
Nach dem Login kopieren

Der obige Code hat den Funktionsneudefinitionsfehler behoben. Wir behalten einfach eine Funktionsdefinition bei und rufen sie in der Hauptfunktion auf.

  1. Verwenden Sie Funktionsdeklarationen und Header-Dateien, wenn Sie dieselbe Funktion in verschiedenen Quelldateien definieren.

Erstens erstellen wir zwei Quelldateien: example.cpp und add.cpp.

// add.h

#ifndef ADD_H
#define ADD_H

int add(int a, int b);

#endif
Nach dem Login kopieren
// add.cpp

#include "add.h"

int add(int a, int b)
{
    return a + b;
}
Nach dem Login kopieren
// example.cpp

#include "add.h"

int main()
{
    int result = add(3, 4);
    return 0;
}
Nach dem Login kopieren

Im obigen Beispiel haben wir eine Header-Datei und eine Funktionsdeklaration verwendet, um den Funktionsneudefinitionsfehler zu beheben. In der Header-Datei add.h definieren wir die Deklaration der Add-Funktion und verwenden einen bedingten Präprozessor, um eine wiederholte Einbindung zu vermeiden.

In der Quelldatei add.cpp implementieren wir die spezifische Definition der Add-Funktion.

Schließlich fügen wir in die Quelldatei example.cpp die Header-Datei add.h ein und können die Add-Funktion ohne Funktionsneudefinitionsfehler verwenden.

Zusammenfassung:
Funktionsneudefinitionsfehler sind einer der häufigsten Fehler in der C++-Entwicklung. Um diesen Fehler zu vermeiden, sollten wir vermeiden, dieselbe Funktion mehrmals in derselben Quelldatei zu definieren, und Funktionsdeklarationen und Header-Dateien verwenden, um Konflikte zu lösen, die durch die Definition derselben Funktion in verschiedenen Quelldateien entstehen. Auf diese Weise können wir hochwertige, fehlerfreie C++-Programme schreiben.

Das obige ist der detaillierte Inhalt vonWie behebt man den C++-Kompilierungsfehler: „Neudefinition von ‚Funktion''?. 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