Chaque fichier doit-il utiliser #include "stdafx.h"
lors de l'utilisation d'en-têtes précompilés? Ou seulement les fichiers sources doivent l'inclure.En-têtes précompilés MSVC: Quels fichiers doivent # inclure "stdafx.h"?
EDIT: En outre, mon fichier d'en-tête précompilé #includes
beaucoup d'en-têtes STL. Mais, dans mes en-têtes, j'ai parfois des fonctions qui retournent std::vector
ou quelque chose comme ça, donc j'ai besoin de #include <vector>
de toute façon. Est-ce pire que d'inclure stdafx.h? Je dois inclure les définitions de mon cadre de test unitaire.
Mais que se passe-t-il si le fichier source d'un autre projet contient ce fichier d'en-tête? Dans ce cas, stdafx.h du premier projet ne sera pas inclus. –
Vous n'êtes autorisé qu'un en-tête précompilé par projet, et chaque _source file_ (ne l'incluez pas à partir d'autres fichiers d'en-tête!) Doit d'abord l'inclure. Si vous voulez travailler avec deux projets avec des fichiers d'en-tête précompilés différents, pas de problème - tant que ce sont des projets séparés. Ils auront chacun leur propre fichier d'en-tête, pas de conflit. – bdonlan
Vous ne me comprenez pas. Projet 1: stdafx.h: #include ... One.h: vecteur Certains(); One.cpp: #include "stdafx.h" #include "One.h" .... Projet 2: Two.cpp: #include "One.h" Dans la classe de vecteur Two.cpp est indéfini, nous avons donc une erreur ici. –