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
Barbara Streisandoriginal
2024-12-27 17:00:11857parcourir

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;
}
// 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!

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