Afficher la hiérarchie # include pour un fichier C++ dans Visual Studio

problème: j'ai un grand projet C++ visuel que j'essaie de migrer vers Visual Studio 2010. C'est un énorme mélange de choses de différentes sources et de différents âges. J'ai des problèmes parce que quelque chose inclut à la fois winsock.h et winsock2.h .

Question: Quels sont les outils et les techniques pour afficher la hiérarchie #include pour un fichier source C++ de studio visuel?

Je connais cl /P pour obtenir la sortie du préprocesseur, mais cela n'indique pas clairement quel fichier inclut quels autres fichiers (et dans ce cas, la sortie /P est de 376,932 lignes de long 8 -)

dans un monde parfait, j'aimerais avoir un affichage hiérarchique des fichiers qui incluent les autres fichiers, ainsi que des numéros de ligne pour que je puisse aller dans les sources:

source.cpp(1)
  windows.h(100)
    winsock.h
  some_other_thing.h(1234)
    winsock2.h
140
demandé sur Jonathan Leffler 2009-07-16 18:22:51

8 réponses

Il y a un paramètre:

Paramètres Du Projet -> Propriétés De Configuration -> C/C++ -> Avancé -> Show Comprend

qui générera l'arbre. Il correspond au commutateur du compilateur / showIncludes

"
199
répondu xtofl 2014-07-09 19:39:05

le compilateur supporte également un commutateur /showIncludes -- il ne vous donne pas les numéros de ligne, mais peut donner une vue assez complète de ce qui inclut viennent d'où.

C'est sous Paramètres du Projet -> Propriétés de Configuration -> C/C++ -> Avancé -> Afficher les Comprend.

19
répondu Kim Gräsman 2009-07-16 14:37:07

nous avons trouvé IncludeManager pour être un outil très puissant. Ce n'est pas gratuit (mais pas cher) et cela nous a permis de nous ressaisir de nos problèmes D'inclusions et de laisser tomber notre temps de compilation de 50 minutes à 8 minutes en taillant de gros morceaux d'inclusions que nous n'utilisions pas.

17
répondu Colin Desmond 2009-07-16 15:18:33

pas aussi bon que la fonctionnalité d'inclusion hiérarchique de gcc, qui montre la hiérarchie d'inclusion en ligne directe dans le cas d'une erreur. L'option" show includes " dans VS montre tout, ce qui est excessif lors du débogage des problèmes de fichiers include hiérarchiques.

6
répondu Paul 2014-05-19 07:50:03

Ici est un bon 3e partie, les logiciels libres de l'outil. Vous pouvez exporter les résultats vers XML, qui inclura des données sur le nombre d'occurrences et les numéros de ligne.

4
répondu Daniel F. Thornton 2009-07-16 14:28:00
3
répondu Agnel Kurian 2017-05-23 12:26:14

cl /P devrait vous montrer les numéros de ligne, de sorte que vous pouvez dire le contexte d'où un fichier d'en-tête est inclus.

si vous retirez les lignes avec ...

grep "^#" ligne de fichier.i

... alors vous devriez avoir une indication assez claire de quels fichiers ont été rencontrés dans l'ordre par le préprocesseur.

s'il s'agit d'un incident isolé ce ça devrait être un diagnostic rapide.

2
répondu polyglot 2009-07-16 14:28:52

il y a maintenant un plugin pour Visual Studio appelé IncludeToolbox . Il peut lister vos includes dépendants et faire plus de choses comme une suppression et une compilation aléatoires pour voir si cette include était nécessaire.

1
répondu Fantastic Mr Fox 2018-06-15 10:49:13