Maison >développement back-end >C++ >Pourquoi mon code C obtient-il une erreur de liaison « Référence non définie à une variable statique » ?

Pourquoi mon code C obtient-il une erreur de liaison « Référence non définie à une variable statique » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-19 03:18:12180parcourir

Why Does My C   Code Get an

Référence non définie à une variable statique : résolution des erreurs de lien

Lors de la compilation du code C, vous pouvez rencontrer une erreur « Symboles non définis » lors du référencement d'un variable statique définie dans un fichier d'en-tête. Cette erreur se produit car l'éditeur de liens ne parvient pas à trouver la définition de la variable statique lors de la liaison.

Dans l'exemple fourni, le fichier d'en-tête Log.h déclare un membre de chaîne statique theString. Cependant, la définition de cette variable statique est absente du fichier Log.cpp. Pour résoudre ce problème, suivez ces étapes :

  1. Définissez la variable statique dans le fichier CPP :

    • Ajoutez la définition du variable statique dans le fichier CPP (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. Supprimer la déclaration d'espace de noms inutile :

    • Supprimer en utilisant l'espace de noms std ; à partir du fichier d'en-tête (Log.h). Ceci est considéré comme une mauvaise pratique car cela pollue l'espace de noms global.

En apportant ces modifications, l'éditeur de liens pourra trouver la définition de la variable statique lors de la liaison, résolvant ainsi le Erreur "Symboles non définis".

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn