Heim > Backend-Entwicklung > C++ > Warum erhalte ich „Undefinierte Symbole für Architektur i386', wenn ich statische Variablen in C verwende?

Warum erhalte ich „Undefinierte Symbole für Architektur i386', wenn ich statische Variablen in C verwende?

Linda Hamilton
Freigeben: 2024-12-20 19:35:12
Original
170 Leute haben es durchsucht

Why Am I Getting

Fehler: Undefinierte Symbole beim Kompilieren mit statischer Bibliothek

Beim Kompilieren von C-Code in XCode kann die Fehlermeldung „Undefinierte Symbole für“ auftreten Architektur i386. Dieser Fehler tritt typischerweise aufgrund undefinierter statischer Variablen im Code auf.

Problemdetails

Im bereitgestellten Code hat die Klasse Log eine statische Variable theString im Header deklariert Datei Log.h, ist aber nicht in der Implementierungsdatei Log.cpp definiert. Dies führt dazu, dass der Linker den Verweis auf die Variable während der Kompilierung nicht auflösen kann.

Lösung

Um diesen Fehler zu beheben, müssen Sie die statische Variable in der Implementierung definieren Datei.

// Log.cpp
#include "Log.h"
#include <iostream>

string Log::theString;  // Define static here

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

Zusätzliche Empfehlung

Es wird auch empfohlen, die zu entfernen Zeile mit Namespace std; aus der Header-Datei, da es den globalen Namespace überall dort, wo der Header enthalten ist, mit std verunreinigt. Stattdessen sollten Sie den std-Namespace explizit angeben, wenn Sie seine Objekte verwenden.

// Log.h
#include <iostream>
#include <string>

class Log {
public:
    static void method(std::string arg);

private:
    static std::string theString;
};
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum erhalte ich „Undefinierte Symbole für Architektur i386', wenn ich statische Variablen in C verwende?. 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