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
Bonjour,

Pourquoi utilise-t-on ces directives?

#ifndef PACKET_H_
#define PACKET_H_


Merci de me répondre.

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
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.
0
choco90 Messages postés 458 Date d'inscription samedi 21 mars 2009 Statut Membre Dernière intervention 13 juillet 2016 7
25 déc. 2015 à 20:52
Salut :D

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?
0
SypayV Messages postés 6555 Date d'inscription vendredi 28 décembre 2007 Statut Non membre Dernière intervention 19 février 2023 458 > 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:59
Un template peut être inclut plusieurs fois.
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.
0
choco90 Messages postés 458 Date d'inscription samedi 21 mars 2009 Statut Membre Dernière intervention 13 juillet 2016 7
25 déc. 2015 à 21:59
Merci beaucoup :)

C'est gentil :D
0
SypayV Messages postés 6555 Date d'inscription vendredi 28 décembre 2007 Statut Non membre Dernière intervention 19 février 2023 458 > choco90 Messages postés 458 Date d'inscription samedi 21 mars 2009 Statut Membre Dernière intervention 13 juillet 2016
25 déc. 2015 à 22:07
Pour ajouter un dernier mot, si l'on inclut un fichier plusieurs fois par inadvertance, ça démontre un défaut de conception.

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.
0