Comment trouver des en-têtes en double dans une solution volumineuse dans MSVC ++ 2005 ou 2008?
-
03-07-2019 - |
Question
Dans Visual Studio (C ++), existe-t-il un moyen de rechercher facilement les en-têtes en double définis dans les fichiers .cpp?
J'essaie également de trouver des moyens de détecter cette situation:
- A comprend B comprend C
- A comprend C
- = > Un n'a pas besoin d'inclure C
La solution
Si vous souhaitez détecter cette situation, vous pouvez ajouter cette macro en haut de chaque fichier. Remplacez A par le nom du fichier
#if A_H
#error "Duplicate include"
#else
#define A_H
#endif
Autres conseils
En général, vous les marquez avec #pragma une fois ou la protection de macro équivalente et vous cessez de vous en soucier.
Si vous utilisez un compilateur MS, vous pouvez placer un message #pragma (IIRC, il peut s'agir d'un avertissement #pragma ou d'une erreur #pragma) avec le nom du fichier d'en-tête tout en haut de chaque fichier d'en-tête et votre sortie de construction montrera la liste de tous ceux qui sont inclus par fichier compilé.
Cela fonctionnerait mieux pour vos fichiers d'en-tête, car ceux du système ne seront pas inclus.
Si vous souhaitez voir tous les en-têtes inclus, éditez les options de compilation pour inclure / P (prétraitement dans un fichier) qui ne compilera pas votre code, mais redirigera le prétraitement vers un fichier, vous pourrez ensuite passer par celui-ci pour afficher les instructions #include. Sachez que ces fichiers seront volumineux.
PC-Lint (et probablement d’autres outils de lint) peuvent indiquer des fichiers d’inclusion non utilisés.