Maison >développement back-end >C++ >Référence non définie au membre statique en C : comment résoudre les problèmes de compilation ?
Référence non définie à un membre statique : résolution des problèmes de compilation
Lorsque vous travaillez avec des membres statiques en C, en particulier lorsque vous utilisez un compilateur croisé, vous peut rencontrer l'erreur « référence non définie à un membre statique ». Cette erreur se produit en raison de l'absence de définition d'une variable membre statique dans un fichier source. Pour résoudre ce problème, suivez ces étapes :
Comprendre le problème
Dans votre exemple, vous avez défini une variable membre statique _fréquence dans la classe WindowsTimer. Cependant, vous n'avez pas défini ses données réelles dans un fichier source distinct (fichier .cpp). Il s'agit de la cause première de l'erreur de compilation.
Solution : Définition de membres statiques
Pour corriger l'erreur, définissez la variable de membre statique dans un fichier source distinct, généralement un fichier .cpp. Par exemple :
// WindowsTimer.cpp LARGE_INTEGER WindowsTimer::_frequency;
Cette définition alloue de la mémoire pour la variable statique et permet au compilateur de la référencer pendant la phase de liaison.
Pourquoi une définition externe est nécessaire
Lorsque vous travaillez avec des membres statiques, il est important de comprendre que leur définition doit être externe à la déclaration de classe. En effet, le compilateur nécessite la définition complète d'un membre statique avant de générer le code et de lier les fichiers objets.
Évitez de placer des définitions dans les fichiers d'en-tête
Bien que ce soit tentant définir des membres statiques dans les fichiers d'en-tête (fichiers .h) pour faciliter l'accès, ce n'est pas une bonne pratique. Plusieurs inclusions du fichier d'en-tête peuvent conduire à plusieurs définitions de la variable statique, entraînant des erreurs de l'éditeur de liens ou un comportement indéfini.
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!