Maison > développement back-end > C++ > Pourquoi mon code C produit-il une erreur « Définition multiple de « wat » » et comment puis-je la corriger ?

Pourquoi mon code C produit-il une erreur « Définition multiple de « wat » » et comment puis-je la corriger ?

Barbara Streisand
Libérer: 2024-12-04 03:56:10
original
1028 Les gens l'ont consulté

Why Does My C   Code Produce a

Définitions multiples de 'wat' dans un projet C

Le code donné se compose de quatre fichiers : FileA.cpp, FileA.h, FileB.cpp et FileB.h. Une fois compilé, il rencontre une erreur indiquant "définition multiple de `wat'".

FileB.h définit une variable entière nommée 'wat' comme suit :

#ifndef FILEB_H_
#define FILEB_H_

int wat;
void world();


#endif /* FILEB_H_ */
Copier après la connexion

Depuis ce fichier d'en-tête est inclus dans FileA.cpp et FileB.cpp, le compilateur détecte que « wat » est défini plusieurs fois. Cela se produit car la macro FILEB_H_ n'est pas correctement définie dans tous les fichiers d'en-tête.

Pour résoudre ce problème, les fichiers d'en-tête doivent être modifiés comme suit :

FichierA.h :

#ifndef FILEA_H_
#define FILEA_H_

#include "FileB.h"
void hello();

#endif /* FILEA_H_ */
Copier après la connexion

FichierB.h :

#ifndef FILEB_H_
#define FILEB_H_

extern int wat;  // Declare 'wat' as external
void world();


#endif /* FILEB_H_ */
Copier après la connexion

FichierB .cpp :

#include "FileB.h"

int wat = 0;  // Define 'wat' with its initial value
void world()
{
    // More code
}
Copier après la connexion

En utilisant 'extern' dans FileB.h, nous informons le compilateur que 'wat' est défini ailleurs et qu'il ne doit pas rechercher sa définition dans le fichier courant. La définition réelle de « wat » est ensuite fournie dans FileB.cpp, évitant 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!

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