Directives

Résolu
Bonjour,

Pourquoi utilise-t-on ces directives?

#ifndef PACKET_H_
#define PACKET_H_


Merci de me répondre.

1 réponse

  1. Contributeur
    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
    1. 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
    2. Contributeur
      @choco90Un 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
    3. Merci beaucoup :)

      C'est gentil :D
      0
    4. Contributeur
      @choco90Pour 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