Question

J'ai un exemple de projet (non minier) qui est dans Visual C ++ 6. Je suis en train de le convertir en Visual Studio 2008.

Le projet utilise plus les en-têtes précompilés. Maintenant, les questions sont:

  1. Quels sont les en-têtes précompilés?

  2. Étant donné que le projet utilise plus les en-têtes précompilés. Je vais aussi les utiliser dans Visual Studio 2008 (le nouveau projet). Mais je reçois des erreurs disant que « Avez-vous oublié d'inclure stdafx.h » , pour remédier à ce problème, je comprennent « stdafx.h » dans chaque fichier source. Cela a fonctionné parfaitement. Mais le projet n'a pas été plus y compris « stdafx.h » dans chaque fichier? Alors, comment puis-je choisir de ne pas inclure « stdafx.h » dans chaque fichier source. Parce que pas tous les fichiers source doivent inclure les fichiers définis dans « stdafx.h », seulement quelques-uns fait. Comment cela se fait?

EDIT: Comment EXLCUDE certains fichiers L'UTILISATION DU précompilés Entête

Était-ce utile?

La solution

Quels sont les en-têtes précompilés?

Souvent, les fichiers sources de C incluent les en-têtes des bibliothèques externes. Sous Windows vous incluez windows.h. Ces fichiers d'en-tête peuvent être très importants et ils prennent un peu de temps pour traiter. Chaque fois que vous compilez un fichier C ++ le compilateur doit lire et traiter des milliers de lignes à partir de ces fichiers d'en-tête. Mais les bibliothèques externes ne changent pas et vous pouvez économiser beaucoup de temps si vous traitez que ces fichiers une fois et sauvegarder le résultat.

Un en-tête précompilés est tout simplement un ensemble de fichiers d'en-tête qui a été traité à une forme intermédiaire qui peut être ensuite utilisé par le compilateur encore et encore.

en-têtes précompilés dans Visual C ++

Dans Visual C ++, il est d'usage de #include tous vos fichiers d'en-tête qui ne changent pas dans stdafx.h. Vous demandez alors le compilateur pour créer le stdafx.pch d'en-tête précompilé lors de la compilation stdafx.cpp qui ne fait rien, mais inclut stdafx.h. Si vous souhaitez utiliser l'en-tête précompilé dans un autre fichier .cpp vous devez inclure stdafx.h comme le premier fichier inclus et demander au compilateur d'utiliser stdafx.pch pour votre tête précompilés.

Si vous obtenez une erreur au sujet que vous avez tout simplement pas compris stdafx.h de charger le compilateur de ne pas utiliser un en-tête précompilé pour ce fichier particulier. (Ou vous pouvez inclure stdafx.h.)

Paramètres d'en-tête précompilés pour les fichiers source individuels

Visual C ++ vous permet de contrôler les paramètres du compilateur pour l'ensemble du projet et des fichiers individuels. Pour accéder aux propriétés individuelles que vous sélectionnez le fichier source dans l'explorateur de solution, clic droit et sélectionnez Propriétés dans le menu contextuel. Les options pour les en-têtes précompilés se trouvent à Propriétés de configuration => C / C ++ => en-têtes précompilés . Si vous modifiez ces paramètres, vous aurez souvent le faire pour toutes les configurations (par exemple Debug et Libération ).

Lorsque vous utilisez les en-têtes précompilés, vous aurez un cadre pour l'ensemble du projet qui demande au compilateur d'utiliser stdafx.pch pour l'en-tête précompilés. Le stdafx.cpp aura un réglage individuel qui indique au compilateur de générer stdafx.pch, et si vous avez des fichiers sources qui ne comprend pas stdafx.h vous pouvez définir les paramètres individuels sur ceux-ci de ne pas utiliser les en-têtes précompilés.

Autres conseils

Lorsque vous compilez le code, le compilateur doit regarder dans tous les en-têtes #include savoir comment compiler le code dans votre fichier .cpp.

Avec de grands projets (ou ceux qui utilisent les bibliothèques comme MFC) ces en-têtes peuvent obtenir énorme, et donc prendre beaucoup de temps à compiler.

Parce que la plupart de ces en-têtes ne changent pas souvent (si jamais), vous pouvez obtenir le compilateur « précompilation » les - il les traite et enregistre son état dans un en-tête précompilé. La prochaine fois, il compile, il n'a pas besoin de lire et de compiler tous ces en-têtes à nouveau, il est donc beaucoup plus rapide.

Une exigence dans Visual Studio est que si vous utilisez un en-tête précompilé, il doit être inclus dans tous les fichiers du projet.

Si le projet est petit, ou vous ne construisez pas souvent, vous pouvez simplement désactiver l'option « d'en-tête précompilé » (dans les paramètres du projet. Cela vaut pour la ensemble du projet ). Le seul effet que vous obtiendrez est qu'il peut compiler plus lentement. Ou laisser comme premier inclure dans chaque fichier l'option activée et il suffit d'ajouter #include « stdafx.h ».

  1. Voir MSDN
  2. En général. vous devez inclure « stdafx.h » dans chaque fichier cpp. Le tout est qu'ils sont précompilés, et vous n'avez pas besoin de vous inquiéter que tous d'entre eux sont utilisés dans un certain fichier concret.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top