Pourquoi ne devrais-je pas #include ?

J’ai posté une question avec mon code dont la seule directive #include était la suivante:

 #include  

Mon professeur m’a dit de le faire, mais dans la section des commentaires, j’ai été informé que je ne devais pas.

Pourquoi?

L’inclusion de semble être une chose de plus en plus courante sur Stack Overflow, peut-être quelque chose de nouveau ajouté à un programme national au cours de l’année scolaire en cours.

J’imagine que les avantages sont vaguement donnés ainsi:

  • Vous devez seulement écrire une ligne #include
  • Vous n’avez pas besoin de chercher quelle en-tête standard tout est dans

Malheureusement, il s’agit d’un hack paresseux, nommant directement un en-tête interne de GCC au lieu d’en-têtes standards individuels tels que , et . Elle ruine la portabilité et favorise de terribles habitudes.

Les inconvénients comprennent:

  • Il ne fonctionnera probablement que sur ce compilateur
  • Vous n’avez aucune idée de ce que cela va faire lorsque vous l’utilisez, car son contenu n’est pas défini par une norme
  • Même la simple mise à niveau de votre compilateur vers sa prochaine version risque de casser votre programme
  • Chaque en-tête standard doit être analysé et compilé avec votre code source, ce qui est lent et entraîne un encombrant encombrant sous certains parameters de compilation.

Ne le fais pas!


Plus d’information:

Exemple de pourquoi Quora est mauvais:

Pourquoi? Parce qu’il est utilisé comme s’il était supposé être un en-tête standard C ++, mais aucun standard ne le mentionne. Donc, votre code n’est pas portable par construction. Vous ne trouverez aucune documentation à ce sujet sur http://cppreference.com . C’est un produit de l’imagination de quelqu’un 🙂