Présentation des en-têtes précompilés
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
- Utilisation des en-têtes précompilés avec les compilateurs C++ améliorés par Clang
- Options de ligne de commande des en-têtes précompilés pour les compilateurs C++ améliorés par Clang
- Expert En-tête précompilé (Windows 32 bits uniquement)
- Options de ligne de commande des en-têtes précompilés pour BCC32
- BCC32.EXE, le compilateur C++ 32 bits en ligne de commande
- Compilateurs C++ améliorés par Clang
- En-têtes précompilés du compilateur C++ (page Options de projet pour les options PCH)