Heim >Backend-Entwicklung >C++ >Warum erhält mein C-Code einen Linkerfehler „Undefinierter Verweis auf statische Variable'?

Warum erhält mein C-Code einen Linkerfehler „Undefinierter Verweis auf statische Variable'?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-19 03:18:12251Durchsuche

Why Does My C   Code Get an

Undefinierter Verweis auf statische Variable: Linkfehler beheben

Beim Kompilieren von C-Code kann es beim Verweisen auf a zu einem Fehler „Undefinierte Symbole“ kommen statische Variable, die in einer Header-Datei definiert ist. Dieser Fehler tritt auf, weil der Linker die Definition der statischen Variablen während der Verknüpfung nicht finden kann.

Im bereitgestellten Beispiel deklariert die Header-Datei Log.h ein statisches String-Mitglied theString. Die Definition dieser statischen Variablen fehlt jedoch in der Datei Log.cpp. Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:

  1. Definieren Sie die statische Variable in der CPP-Datei:

    • Fügen Sie die Definition der hinzu statische Variable zur CPP-Datei (Log.cpp).
    #include "Log.h"
    #include <iostream>
    
    // Define the static variable here
    string Log::theString;
    
    void Log::method(string arg) {
        theString = "hola";
        cout << theString << endl;
    }
  2. Unnötige Namespace-Deklaration entfernen:

    • Entfernen mit Namespace std; aus der Header-Datei (Log.h). Dies gilt als schlechte Praxis, da es den globalen Namespace verschmutzt.

Durch diese Änderungen kann der Linker die Definition der statischen Variablen während der Verknüpfung finden und das Problem auflösen Fehler „Undefinierte Symbole“.

Das obige ist der detaillierte Inhalt vonWarum erhält mein C-Code einen Linkerfehler „Undefinierter Verweis auf statische Variable'?. 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