Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit nur einem Funktionsprototyp kann der Compiler ohne Fehler fortfahren, aber der Linker kann einen Aufruf an eine Adresse nicht auflösen, da kein Funktionscode oder variablen Leerraum reserviert ist. Dieser Fehler wird erst angezeigt, wenn Sie einen Aufruf der Funktion erstellen, die der Linker beheben muss.
Beispiel: Aufrufen einer nicht definierten Funktion
Der Funktionsaufruf im Hauptteil führt zu LNK2019, da der Prototyp es dem Compiler ermöglicht, zu denken, dass die Funktion vorhanden ist. Der Linker findet, dass er nicht.
// LNK2019_MFBV.cpp
// LNK2019 expected
void DoSomething(void);
int main() {
DoSomething();
}
Beispiel: Aufrufen einer implementierten Funktion
Stellen Sie in C++ sicher, dass Sie die Implementierung einer bestimmten Funktion für eine Klasse und nicht nur einen Prototyp in der Klassendefinition einschließen. Wenn Sie die Klasse außerhalb der Headerdatei definieren, müssen Sie den Klassennamen vor der Funktion (Classname::memberfunction) einschließen.
// LNK2019_MFBV_2.cpp
// LNK2019 expected
struct A {
static void Test();
};
// Should be void A::Test() {}
void Test() {}
int main() {
A AObject;
AObject.Test();
}