Directives
Résolu/Fermé
choco90
Messages postés
458
Date d'inscription
samedi 21 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2016
-
25 déc. 2015 à 20:21
SypayV Messages postés 6555 Date d'inscription vendredi 28 décembre 2007 Statut Non membre Dernière intervention 19 février 2023 - 25 déc. 2015 à 22:07
SypayV Messages postés 6555 Date d'inscription vendredi 28 décembre 2007 Statut Non membre Dernière intervention 19 février 2023 - 25 déc. 2015 à 22:07
1 réponse
SypayV
Messages postés
6555
Date d'inscription
vendredi 28 décembre 2007
Statut
Non membre
Dernière intervention
19 février 2023
458
Modifié par SypayV le 25/12/2015 à 20:24
Modifié par SypayV le 25/12/2015 à 20:24
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.
25 déc. 2015 à 20:52
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?
25 déc. 2015 à 20:59
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.
25 déc. 2015 à 21:59
C'est gentil :D
25 déc. 2015 à 22:07
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.