inclure stdafx.h dans l'en-tête ou le fichier source?
J'ai un fichier d'en-tête appelé stdafx.h et celui-ci est précompilé de cours.
J'ai lu que je devrais inclure ces fichiers dans mon .fichiers cpp, mais certains de ces états sont déjà nécessaires dans le fichier d'en-tête à venir.
Dois-je ajouter de la stdafx dans ma tête ou dans mon rpc? Je pensais que c'était de bonne pratique pour le mettre dans l'en-tête, mais il me semble être obligé de le mettre dans l'en-tête de la place.
Exemple:
stdafx contient freeglut.
ma classe fichier d'en-tête a un attribut de GLenum.
Dois-je inclure les stdafx dans le .h de la classe?
source d'informationauteur Marnix
Vous devez vous connecter pour publier un commentaire.
Considérer que C++ n'est pas de compiler des fichiers d'en-tête, juste les fichiers Cpp.
Donc si le stdafx est le premier à inclure dans le fichier cpp, alors le compilateur aura tout le fichier d'en-tête besoins, quand il frappe la headerfile dans le fichier Cpp.
par exemple
Vous avez A.cpp & A. h.
A. h a besoin de std:string.
vous avez B.cpp & B. h
B. h a besoin de A. h donc B. h a besoin de std::string trop.
Parce que c'est une bonne pratique, vous mettez
#include <string>
dans stdafx.h.De votre échec de la construction, car rien ne peut voir std::string
Maintenant mettre stafx.h comme la première inclure dans A.cpp et B.cpp.
Lorsque le compilateur hits A.cpp il ramasse le incldue pour
<string>
, puis ramasse A. h, et tout ce qui est heureux parce que nous savons que std::string est.Le compilateur frappe maintenant B.cpp, il comprend stdafx première, qui apporte
<string>
puis frappe B. h, ce qui apporte R. h qui est de nouveau heureux parce que std::string a déjà été inclus.Espère que cette aide.
Posez-vous ces deux questions avant de les inclure quelque chose dans stdafx.h
chaqueplusieurs fichier source?Si la réponse est "Non" à une de ces puis ne pas l'inclure.