Résoudre les erreurs de définition multiples : comprendre la portée des variables en C
En C, plusieurs définitions d'une variable peuvent entraîner des erreurs de compilation. Pour comprendre ce problème, examinons le scénario donné.
Considérez les quatre fichiers fournis : FileA.cpp, FileA.h, FileB.cpp et FileB.h. Dans FileB.h, une variable globale nommée wat est déclarée comme int wat;. Cependant, lors de la compilation, le compilateur détecte plusieurs définitions de wat.
Cette erreur survient car la variable wat est définie à la fois dans FileB.h et FileB.cpp. Par défaut, C place les variables globales dans la portée globale, qui est partagée entre toutes les unités de compilation. Lorsqu'il existe plusieurs définitions de la même variable, le compilateur ne peut pas déterminer quelle définition utiliser.
Pour résoudre ce problème, on peut exploiter le concept de déclaration directe. Cette technique permet de déclarer l'existence d'une variable sans fournir sa définition. Dans ce cas, modifiez FileB.h comme suit :
extern int wat;
Dans FileB.cpp, définissez la variable comme d'habitude :
int wat = 0;
En utilisant le mot-clé extern, nous demandons au compilateur que ce qui existe ailleurs dans le programme et que sa définition sera fournie plus tard. Cela garantit que wat n'est déclaré et défini qu'une seule fois.
En résumé, plusieurs définitions de variables se produisent lorsqu'une variable est définie plus d'une fois sans mécanismes de portée appropriés. Les déclarations Forward aident à résoudre ce problème en indiquant l'existence d'une variable tout en reportant sa définition à un fichier source spécifique.
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!