Maison >développement back-end >C++ >Pourquoi l'inclusion multiple d'un fichier d'en-tête provoque-t-elle des erreurs de « définition multiple » en C ?
Définitions multiples d'une variable en C
En C, définir une variable plusieurs fois peut entraîner des erreurs de compilation. Ce problème peut survenir lorsque plusieurs fichiers incluent un fichier d'en-tête, ce qui entraîne plusieurs définitions de la même variable.
Considérez le scénario suivant :
// FileA.cpp #include "FileA.h" int main() { hello(); return 0; }
// FileA.h #ifndef FILEA_H_ #define FILEA_H_ void hello(); #endif
// FileB.cpp #include "FileB.h"
// FileB.h #ifndef FILEB_H_ #define FILEB_H_ int wat; void world(); #endif
Lors de la compilation de ce code, vous pouvez rencontrer l'erreur "définition multiple de wat'" car FileA.h et FileB.h définissent la variable wat`.
Solution :
Pour résoudre ce problème, nous pouvons utiliser le mot-clé extern. Ce mot-clé déclare une variable comme existant ailleurs dans le programme et empêche qu'elle soit définie plusieurs fois.
// FileB.h extern int wat;
// FileB.cpp int wat = 0;
En déclarant wat comme extern dans FileB.h, nous disons essentiellement au compilateur que le la définition de wat existe dans un autre fichier (FileB.cpp dans ce cas). Cela garantit qu'il n'y aura pas plusieurs définitions de la variable et permet à la compilation de se dérouler sans erreur.
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!