À quoi sert “stdafx.h” dans Visual Studio ?
Tous les compilateurs C++ ont un sérieux problème de performance à gérer. Compiler du code C++ est un processus long et lent.
Compiler les en-têtes inclus en haut des fichiers C++ est un processus très long et lent. Compiler les énormes structures d’en-têtes qui font partie de l’API Windows et d’autres grandes bibliothèques d’API est un processus très, très long et lent. Devoir le faire encore, et encore, et encore pour chaque fichier source Cpp est un coup fatal.
Ce n’est pas propre à Windows mais un ancien problème rencontré par tous les compilateurs qui doivent compiler contre une grande API comme Windows.
Le compilateur Microsoft peut atténuer ce problème avec une astuce simple appelée en-têtes précompilés. L’astuce est assez élégante : bien que chaque fichier CPP puisse potentiellement et légalement donner une signification légèrement différente à la chaîne de fichiers d’en-têtes inclus en haut de chaque fichier Cpp (par des choses comme avoir différentes macros #define’d en amont des inclusions, ou en incluant les en-têtes dans un ordre différent), ce n’est le plus souvent pas le cas. La plupart du temps, nous avons des dizaines ou des centaines de fichiers inclus, mais ils sont tous destinés à avoir la même signification pour tous les fichiers Cpp compilés dans votre application.
Le compilateur peut réaliser d’énormes gains de temps s’il n’a pas à commencer la compilation de chaque fichier Cpp plus ses dizaines d’inclusions littéralement à partir de zéro à chaque fois.
L’astuce consiste à désigner un fichier d’en-tête spécial comme point de départ de toutes les chaînes de compilation, le fichier dit ‘en-tête précompilé’, qui est communément un fichier nommé stdafx.h simplement pour des raisons historiques.
Listez simplement tous vos gros en-têtes pour vos API dans votre fichier stdafx.h, dans l’ordre approprié, puis commencez chacun de vos fichiers CPP tout en haut avec un #include "stdafx.h", avant tout contenu significatif (à peu près la seule chose autorisée avant, ce sont les commentaires).
Dans ces conditions, au lieu de commencer à partir de zéro, le compilateur commence la compilation à partir des résultats déjà sauvegardés de la compilation de tout ce qui se trouve dans stdafx.h.
Je ne crois pas que ce
(Réponse tronquée)