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
Mary-Kate Olsenoriginal
2024-12-04 07:09:11976parcourir

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;

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!

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