Définition multiple d'une variable en C
Lorsque vous travaillez avec plusieurs fichiers dans des projets C, vous pouvez rencontrer des erreurs liées à plusieurs définitions d'une variable . Considérons la situation suivante :
FileA.cpp :
#include "FileA.h" int main() { hello(); return 0; } void hello() { //code here }
FileA.h :
#ifndef FILEA_H_ #define FILEA_H_ #include "FileB.h" void hello(); #endif /* FILEA_H_ */
FileB.cpp :
#include "FileB.h" void world() { //more code; }
FileB.h :
#ifndef FILEB_H_ #define FILEB_H_ int wat; void world(); #endif /* FILEB_H_ */
En essayant de compiler ce code, vous pourriez rencontrez une erreur indiquant "définition multiple de `wat'."
Explication :
L'erreur survient parce que vous avez défini une variable globale, wat, deux fois dans votre compilation unité. FileA.h et FileB.h incluent tous deux une déclaration de wat, la définissant deux fois dans la portée globale.
Solution :
Pour résoudre ce problème, suivez ces étapes :
FileB.h :
extern int wat;
FileB.cpp :
int wat = 0;
En utilisant extern dans FileB.h, vous informez le compilateur qu'une variable nommée wat existe ailleurs. Dans ce cas, vous définissez la variable réelle avec un initialiseur dans FileB.cpp.
Cette approche garantit que wat est déclaré une fois dans la portée globale, éliminant ainsi l'erreur de définition multiple.
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!