Heim >Backend-Entwicklung >C++ >Warum erhalte ich in C einen statischen Variablenverknüpfungsfehler?

Warum erhalte ich in C einen statischen Variablenverknüpfungsfehler?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-31 08:02:09420Durchsuche

Why Am I Getting a Static Variable Link Error in C  ?

Statischer Variablen-Link-Fehler [Duplikat]

Bei der C-Programmierung kann ein Link-Fehler auftreten, wenn eine statische Variable deklariert, aber nicht definiert ist der Code. Dieser Fehler weist darauf hin, dass der Linker die Definition der statischen Variablen während der Verknüpfungsphase nicht finden kann.

Im angegebenen Code verfügt die Klasse Log über eine statische Variable theString, die in der Header-Datei Log.h deklariert ist, dies ist jedoch der Fall nicht in der Implementierungsdatei Log.cpp definiert. Um den Linkfehler zu beheben, muss die statische Variable in der Implementierungsdatei definiert werden.

Der korrigierte Code in Log.cpp sollte wie folgt lauten:

#include "Log.h"
#include <ostream>

string Log::theString;  // Define the static variable here

void Log::method(string arg) {
    theString = "hola";
    cout << theString << endl;
}

Zusätzlich wird empfohlen, die zu entfernen Verwenden des Namensraums std; Zeile aus der Header-Datei. Diese Vorgehensweise verhindert, dass der globale Namespace mit Standardsymbolen verunreinigt wird, was zu Namenskonflikten und potenziellen Fehlern führen kann.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in C einen statischen Variablenverknüpfungsfehler?. 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