Comment trouver des en-têtes en double dans une solution volumineuse dans MSVC ++ 2005 ou 2008?

StackOverflow https://stackoverflow.com/questions/411142

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
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top