Présentation des en-têtes précompilés

De RAD Studio
Aller à : navigation, rechercher

Remonter à Compilation, construction et exécution d'applications - Index

L'utilisation d'en-têtes précompilés pour vos projets C++ présente certains avantages, mais des pièges sont à éviter lors de la création et de l'utilisation d'en-têtes précompilés.

Avantages des en-têtes précompilés

La création et l'utilisation d'en-têtes précompilés peut :

  • Réduire le temps de compilation des fichiers C++
  • Réduire le nombre de lignes de code que le compilateur doit traiter

Pièges à éviter

Lors d'un usage sans discernement, les en-têtes précompilés peuvent réellement augmenter le temps de compilation. Prenez garde aux pièges potentiels suivants :

  • De simples unités de compilation faisant référence à très peu de symboles peuvent être compilées plus rapidement sans en-têtes précompilés . L'utilisation d'un en-tête précompilé peut ralentir la compilation.
  • Si un en-tête faisant partie d'un en-tête précompilé change régulièrement, la surcharge de recréation permanente de l'en-tête précompilé peut compenser les avantages de son utilisation.
  • Pour des en-têtes précompilés très importants, les E/S impliquées dans la lecture ou la mise à jour du fichier peut compenser le gain des en-têtes précompilés.

Certains en-têtes ne sont pas des bons candidats à l'inclusion dans un en-tête précompilé. Respectez les principes suivants pour déterminer si un en-tête doit être précompilé.

N'incluez pas les types d'en-tête suivants dans un en-tête précompilé :

  • Tout en-tête qui n'est pas déjà correctement surveillé. C'est-à-dire que le fichier en-tête ne contient pas de gardes de préprocesseur (avec #define) qui garantiraient qu'il n'est *vu* qu'une seule fois par le compilateur même s'il est inclus plusieurs fois.
  • Un en-tête qui contient du code qui s'appuie sur certaines macros que seulement peu d'unités de compilation définissent.
  • Tout en-tête qui subit des modifications régulières ou fréquentes.
  • Tout en-tête qui contient des données. Le compilateur génère un message à propos des en-têtes qui contiennent des données et ne peuvent donc pas faire partie d'un en-tête précompilé.

Les en-têtes précompilés peuvent masquer un code incorrect. Par exemple, un fichier .cpp, dont l'inclusion explicite d'un en-tête requis échoue, peut compiler sans erreur lors de l'utilisation d'un en-tête précompilé qui inclut le fichier d'en-tête manquant mais échoue quand l'en-tête précompilé est désactivé. C'est une bonne idée de construire sans les en-têtes précompilés pour garantir que votre source inclut correctement tous les en-têtes nécessaires.

Voir aussi