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 ?

Pourquoi l'inclusion multiple d'un fichier d'en-tête provoque-t-elle des erreurs de « définition multiple » en C ?

Barbara Streisand
Libérer: 2024-12-27 17:00:11
original
915 Les gens l'ont consulté

Why Does Multiple Inclusion of a Header File Cause

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;
}
Copier après la connexion
// FileA.h
#ifndef FILEA_H_
#define FILEA_H_
void hello();
#endif
Copier après la connexion
// FileB.cpp
#include "FileB.h"
Copier après la connexion
// FileB.h
#ifndef FILEB_H_
#define FILEB_H_

int wat;
void world();
#endif
Copier après la connexion

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;
Copier après la connexion
// FileB.cpp
int wat = 0;
Copier après la connexion

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!

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