A quoi sert :
#ifndef __ARTICLE_H_INCLUDED__
#define __ARTICLE_H_INCLUDED__
#endif
?
A quoi sert :
#ifndef __ARTICLE_H_INCLUDED__
#define __ARTICLE_H_INCLUDED__
#endif
?
Salut
Ca sert à éviter de déclarer plusieurs fois ce qui se trouve entre le #define et le #endif.
C'est utile quand un header (.h) est inclus plusieurs fois (par d'autres headers) dans le même fichier d'implémentation (.c).
A noter, certains compilateurs utilisent la consigne de compilation #pragma once pour éviter les déclarations multiples.
Dernière modification par Invité(e) ; 27/03/2008 à 16h02.
Non, c'est utile quand un header est inclus par d'autres et risque donc d'être inclus plusieurs fois lors de la compilation du même fichier source.
À noter aussi que les noms commençant par "_" ou "__" + une lettre sont réservés par la norme, ces defines devraient donc avoir un autre nom (une convention courante est H_ARTICLE_20080327_1539 par exemple).
PS: le nom que j'ai le plus vu pour cette pratique, c'est gardes d'inclusion.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Cela evite les inclusions multiples.
Ainsi, si ton .h est inclus dans plusieurs fichiers sources différents, ce qui est entre ton #define et #endif , que ça soit une classe, une structure ou une bibliotheque, ne sera déclarer qu'une seule fois.
explication:
#ifndef MONHEADER_H => si MONHEADER_H n'est pas déclaré
#define MONHEADER_H => alors je déclare MONHEADER_H
...
#endif => fin de la déclartion de MONHEADER_H
D'apres ce que l'on m'a enseigné.
Mac & Cheese
Correction:
- #endif => fin de la zone qui sera sautée si MONHEADER_H est déjà défini.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager