Maison > développement back-end > C++ > Comment résoudre les erreurs de « définition multiple de variable » en C ?

Comment résoudre les erreurs de « définition multiple de variable » en C ?

Susan Sarandon
Libérer: 2024-11-30 13:10:11
original
173 Les gens l'ont consulté

How to Resolve

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
}
Copier après la connexion

FileA.h :

#ifndef FILEA_H_
#define FILEA_H_
#include "FileB.h"
void hello();

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

FileB.cpp :

#include "FileB.h"

void world()
{
    //more code;
}
Copier après la connexion

FileB.h :

#ifndef FILEB_H_
#define FILEB_H_

int wat;
void world();


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

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;
Copier après la connexion

FileB.cpp :

int wat = 0;
Copier après la connexion

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!

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