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
Freigeben: 2024-12-19 03:18:12
Original
178 Leute haben es durchsucht

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;
    }
    Nach dem Login kopieren
  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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage