Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens des « Symboles non définis pour l'architecture i386 » lors de l'utilisation de variables statiques en C ?
Erreur : symboles non définis lors de la compilation avec la bibliothèque statique
Lors de la compilation du code C dans XCode, vous pouvez rencontrer le message d'erreur "Symboles non définis pour architecture i386." Cette erreur se produit généralement en raison de variables statiques non définies dans le code.
Détails du problème
Dans le code fourni, la classe Log a une variable statique theString déclarée dans l'en-tête. fichier Log.h mais n'est pas défini dans le fichier d'implémentation Log.cpp. Cela a pour conséquence que l'éditeur de liens ne parvient pas à résoudre la référence à la variable lors de la compilation.
Solution
Pour résoudre cette erreur, vous devez définir la variable statique dans l'implémentation fichier.
// Log.cpp #include "Log.h" #include <iostream> string Log::theString; // Define static here void Log::method(string arg) { theString = "hola"; cout << theString << endl; }
Recommandation supplémentaire
Il est également recommandé de supprimer la ligne en utilisant l'espace de noms std ; du fichier d'en-tête car il pollue l'espace de noms global avec std partout où l'en-tête est inclus. Au lieu de cela, vous devez spécifier explicitement l'espace de noms std lorsque vous utilisez ses objets.
// Log.h #include <iostream> #include <string> class Log { public: static void method(std::string arg); private: static std::string theString; };
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!