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   -
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 6586 Date d'inscription   Statut Contributeur Dernière intervention   449
 
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   Statut Membre Dernière intervention   7
 
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 6586 Date d'inscription   Statut Contributeur Dernière intervention   449 > choco90 Messages postés 458 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   7
 
Merci beaucoup :)

C'est gentil :D
0
SypayV Messages postés 6586 Date d'inscription   Statut Contributeur Dernière intervention   449 > choco90 Messages postés 458 Date d'inscription   Statut Membre Dernière intervention  
 
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