Directives
Résolu
choco90
Messages postés
458
Date d'inscription
Statut
Membre
Dernière intervention
-
SypayV Messages postés 6586 Date d'inscription Statut Contributeur Dernière intervention -
SypayV Messages postés 6586 Date d'inscription Statut Contributeur Dernière intervention -
1 réponse
Bonjour,
C'est simplement pour éviter d'inclure 2 fois la même chose.
En effet, non seulement inclure plusieurs fois un fichier ralentira le compilateur mais, pire, ceci peut apporter des erreurs car le compilateur se retrouvera avec plusieurs choses du même nom sans savoir si c'est vraiment la même chose. (Il ne faut pas lui en vouloir, c'est une machine).
Il s'agit d'une macro conditionnelle.
#ifndef PACKET_H_ -> Si PACKET_H_ n'est pas défini
#define PACKET_H_ -> Alors on le définit.
A la fin du fichier il y aura #endif
Musicalement,
SypayV.
C'est simplement pour éviter d'inclure 2 fois la même chose.
En effet, non seulement inclure plusieurs fois un fichier ralentira le compilateur mais, pire, ceci peut apporter des erreurs car le compilateur se retrouvera avec plusieurs choses du même nom sans savoir si c'est vraiment la même chose. (Il ne faut pas lui en vouloir, c'est une machine).
Il s'agit d'une macro conditionnelle.
#ifndef PACKET_H_ -> Si PACKET_H_ n'est pas défini
#define PACKET_H_ -> Alors on le définit.
A la fin du fichier il y aura #endif
Musicalement,
SypayV.
Merci pour la réponse.
Mais j'ai pas compris la première phrase. Dans quel cas on peut inclure 2 fois la même chose? Est ce que tu peux me donner un exemple STP?
C'est probablement la seule chose qu'on peut inclure plusieurs fois.
Mais on peut aussi inclure le même fichier par inadvertance.
Imaginons que b.h inclut a.h, que a.cpp inclut b.h et a.h ... alors a.h sera inclut 2 fois par a.cpp.
C'est gentil :D
Par contre, il peut arriver que le fichier .h lui même ait besoin de la définition complète de ce qu'il utilise.
Il peut aussi arriver que le compilateur garde en mémoire les fichiers .h entre plusieurs compilations de fichiers .cpp.
Bref, dans n'importe quel cas, il vaut mieux utiliser ces directives. C'est une bonne pratique, qui ne coûte que 3 lignes à copier-coller au lieu de 3 heures de prise de tête.