Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens une erreur de compilation « Définitions multiples pour « wat » » en C ?

Pourquoi est-ce que j'obtiens une erreur de compilation « Définitions multiples pour « wat » » en C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-08 07:04:16836parcourir

Why Am I Getting a

Définition multiple de variables en C

Rencontrer une erreur de compilation de « définitions multiples pour wat » peut être déroutant. Analysons le code source fourni et identifions le problème.

Dans votre code, vous avez quatre fichiers : FileA.cpp, FileA.h, FileB.cpp et FileB.h. Lors de la compilation, le compilateur détecte plusieurs définitions d'une variable nommée wat.

Après inspection, vous avez défini la variable wat à la fois dans FileA.h et FileB.h :

// FileA.h
void hello();

#endif /* FILEA_H_ */

// FileB.h
int wat;
void world();

#endif /* FILEB_H_ */

Lorsque votre Lorsque le code est compilé, les fichiers d'en-tête sont inclus plusieurs fois dans l'unité de compilation, ce qui entraîne des définitions en double de la variable wat. Pour résoudre ce problème, vous devez séparer la déclaration de wat de sa définition.

Solution :

  1. Déclarer wat comme variable externe dans FileB.h :
extern int wat;

Cela informe le compilateur que ce qui sera défini ailleurs.

  1. Définir wat dans FileB.cpp :
int wat = 0;

Maintenant, lors de la compilation, le compilateur identifiera correctement wat comme étant déclaré dans FileB.h et défini dans FileB.cpp, résolvant 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!

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