Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behebt man den C++-Kompilierungsfehler: „Undefinierter Verweis auf „Funktion''?

Wie behebt man den C++-Kompilierungsfehler: „Undefinierter Verweis auf „Funktion''?

WBOY
WBOYOriginal
2023-08-27 08:15:411620Durchsuche

解决C++编译错误:'undefined reference to 'function'',如何解决?

C++-Kompilierungsfehler lösen: „Undefinierter Verweis auf „Funktion“, wie kann man ihn lösen?

1. Problembeschreibung
Beim Programmieren in C++ stoßen wir häufig auf Kompilierungsfehler. Diese Fehlermeldung weist darauf hin, dass der Verweis auf eine bestimmte Funktion undefiniert ist. Dieser Fehler tritt normalerweise während der Verknüpfungsphase auf, wenn der Compiler die Definition der Funktion nicht finden kann, was dazu führt, dass die Kompilierung fehlschlägt.

2. Fehlerursache

  1. Fehlende Funktionsdefinition: Möglicherweise ist die Funktionsdefinition nicht im Programm enthalten oder die Funktionsdefinition ist nicht korrekt im Programm enthalten.
  2. Funktionsdeklarationsfehler: Die Deklaration einer Funktion stimmt nicht mit ihrer tatsächlichen Definition überein, oder die Funktion ist an der falschen Stelle deklariert.

3. Lösung
Für die oben genannten Fehlergründe finden Sie hier einige gängige Lösungen.

  1. Fehlende Funktionsdefinition
    Für diese Situation ist die Lösung einfach: Geben Sie einfach die Definition der Funktion an der entsprechenden Stelle im Programm an. Angenommen, wir haben die folgende Funktionsdeklaration:
// function.h
int sum(int a, int b);
// main.cpp
#include "function.h"

int main() {
    int result = sum(1, 2);
    return 0;
}

Im obigen Code stellen wir nur die Funktionsdeklaration bereit, nicht jedoch die Funktionsdefinition. Um dieses Problem zu lösen, müssen wir die Definition der Funktion an der entsprechenden Stelle bereitstellen:

// function.cpp
int sum(int a, int b) {
    return a + b;
}

Auf diese Weise kann der Compiler zur Kompilierungszeit die tatsächliche Definition der Funktion finden und so den „undefinierten Verweis auf „Funktion““ lösen. " Fehler.

  1. Funktionsdeklarationsfehler
    Funktionsdeklarationsfehler können durch die Inkonsistenz zwischen der Deklaration der Funktion und ihrer tatsächlichen Definition verursacht werden. Die Lösung dieses Problems besteht darin, zu überprüfen, ob die Funktionsdeklaration und -definition konsistent sind, einschließlich Parametertypen, Anzahl der Parameter, Funktionsrückgabewert usw.

Betrachten Sie das folgende Codebeispiel:

// function.h
float sum(int a, int b); // 函数声明
// function.cpp
int sum(int a, int b) { // 函数定义
    return a + b;
}

Im obigen Code sind die Deklaration und die definierten Rückgabewerttypen der Funktion inkonsistent, einer ist als Float-Typ und der andere als Int-Typ definiert. Dies führt dazu, dass der Compiler den Verweis und die Definition der Funktion nicht korrekt zuordnen kann, was zu einem Fehler „Undefinierter Verweis auf ‚Funktion‘“ führt.

Um dieses Problem zu lösen, müssen wir nur die Deklaration der Funktion mit dem definierten Rückgabewerttyp konsistent halten:

// function.h
int sum(int a, int b); // 函数声明
// function.cpp
int sum(int a, int b) { // 函数定义
    return a + b;
}

Auf diese Weise kann der Compiler die Referenz und Definition der Funktion korrekt zuordnen und so das Problem lösen Fehler „undefinierter Verweis auf ‚Funktion‘“.

4. Zusammenfassung
In der C++-Programmierung sind Kompilierungsfehler für uns kein Unbekannter. Einer der häufigsten Fehler ist „undefinierter Verweis auf ‚Funktion‘“, was bedeutet, dass für einen Verweis auf eine Funktion keine Definition gefunden wurde. Um dieses Problem zu lösen, müssen wir darauf achten, ob die Definition der Funktion bereitgestellt wird und ob die Deklaration der Funktion mit ihrer Definition übereinstimmt. Dieses Problem kann leicht gelöst werden, indem die Definition der Funktion korrekt bereitgestellt wird und die Funktionsdeklaration mit der Definition konsistent gehalten wird.

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