web-dev-qa-db-fra.com

Puis-je utiliser #include "pch.h" au lieu de #include "stdafx.h" comme en-tête de précompilation dans Visual Studio C++?

C'est la première fois que je travaille avec C++ et que je me lance correctement dans le codage. Je suis les tutoriels C++ sur learncpp.com et j'utilise Visual Studio 2017 ... 

Dans le tutoriel, ils commencent avec un simple "Bonjour le monde!" code et en haut du code ils ont mis #include "stdafx.h" avec #include <iostream>. Lorsque je réplique ce code moi-même et que je tente de le construire, j'obtiens le message d'erreur suivant:

C1010: fin de fichier inattendue lors de la recherche d'un en-tête précompilé. Avez-vous oublié d'ajouter #include "pch.h" à votre source?

En examinant mon explorateur de solutions, j'ai remarqué que, dans leur didacticiel, dans l'en-tête et les fichiers sources, ils contenaient des fichiers appelés "stdafx.h" et "stdafx.cpp", mais ces fichiers s'appellent pour moi "pch.h" et "pch .cpp ".

J'ai donc essayé de renommer le #include "stdafx.h" en #include "pch.h" et le code a été construit et exécuté parfaitement. Donc, devrais-je me contenter de #include "pch.h" pour le reste de mon code ou est-ce un problème?

Merci!

9
Honesty_DEV

Le nom des en-têtes précompilés par défaut était stdafx.h depuis plusieurs années. Dernièrement, avec VS 2017, ils ont changé le nom par défaut que l'assistant de projet crée en pch.h. Je ne sais pas pourquoi mais ils l'ont fait.

Vous pouvez ajuster le nom du fichier d'en-tête précompilé dans les propriétés du projet sous Propriétés de configuration -> C/C++ -> En-têtes précompilés. Vous pouvez également activer ou désactiver leur utilisation ici. Vous pouvez même définir ceci sur une base par fichier. Vous pouvez même configurer plusieurs fichiers d'en-tête précompilés différents dans un même projet.

Donc, pour vous, question concrète: il n'y aura pas de problème de remplacement de stdafx.h avec pch.h dans votre tutoriel. Le tutoriel est probablement juste plus ancien et n'a pas encore été mis à jour.

12
marc40000

Essayez de déplacer "#include pch.h" tout en haut du fichier (avant tout autre en-tête).

Certains compilateurs ne compileront pas le contenu avant le ou les fichiers d'en-tête pré-compilés par défaut. Ce paramètre peut être changé cependant.

1
user3579754

Dans les didacticiels de learncpp.com, le ou les instructeurs nous recommandent de désactiver l'option supplémentaire "En-tête précompilé" lors de la création d'un nouveau projet C++ à l'aide de l'option Wizard du bureau Windows de Visual Studio. Et c'est une bonne idée de le faire tant que les fichiers d'en-tête n'ont pas été introduits.

Cependant, pch.h semble être le "nouveau" stdafx.h, ce n'est donc pas que vous pouvez utiliser le premier au lieu du dernier, mais que vous devez le faire, au moins si vous choisissez l'option "En-tête précompilé".

0
ManuAlvarado22