Maison > développement back-end > C++ > Comment puis-je résoudre plusieurs erreurs de définition causées par des variables globales en C ?

Comment puis-je résoudre plusieurs erreurs de définition causées par des variables globales en C ?

Mary-Kate Olsen
Libérer: 2024-12-04 07:09:11
original
973 Les gens l'ont consulté

How Can I Resolve Multiple Definition Errors Caused by Global Variables in C  ?

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;
Copier après la connexion

Dans FileB.cpp, définissez la variable comme d'habitude :

int wat = 0;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal