C ++ Include-Datei-Browser

8

Ich habe ein sehr großes Projekt mit Tonnen von verschachtelten Header-Dateien, die alle einander enthalten. Es gibt auch eine große Anzahl von Drittanbieter-Bibliotheken, auf die es ankommt. Ich versuche, das Durcheinander zu beseitigen, aber ich habe einige Probleme, da ich eine # include-Direktive sehr oft entfernen werde, nur um zu finden, dass das Zeug, das es beinhaltete, immer noch in einer der anderen Dateien enthalten ist . Gibt es ein Werkzeug, mit dem ich das verstehen kann? Ich würde wirklich in der Lage sein wie auf einer H-Datei zu klicken, und fragen sie, welche CPP-Dateien es in enthalten ist (direkt oder indirekt), und die Wege, durch denen es enthalten ist, und ebenfalls eine CPP-Datei klicken und stellt es die. h-Dateien sind enthalten (direkt und indirekt). Ich habe noch nie von einem Tool gehört, das das macht, und ein bisschen schnelles Googlen hat nichts ausgemacht, aber vielleicht weiß ich nicht, wonach ich suchen soll.

    
rmeador 13.07.2009, 19:16
quelle

5 Antworten

4
Steve Folly 13.07.2009, 21:25
quelle
4

Für VS2003 gibt es / showIncludes Flag (in C / C ++ / Erweiterte Eigenschaften). Dadurch werden alle Header gedruckt, die in jeder .cpp-Datei enthalten sind und was sie enthalten, sodass Sie von dort aus fortfahren können.

Ich bin mir sicher, dass es für VS2008 dieselbe Option an derselben Stelle gibt.

    
Eugene 13.07.2009 20:05
quelle
3

Wenn Sie GCC-Compiler verwenden, versuchen Sie dies

%Vor%

Es werden alle Abhängigkeiten für die Datei abc.cpp

angezeigt     
oscarkuo 13.07.2009 19:29
quelle
0

Deine Situation erinnert mich an meine eigene. Ich habe eine Reihe von Headern, die ich erstellt habe, die ich als Bibliothek benutze, anstatt mich mit einer DLL zu beschäftigen.

Natürlich können die zyklischen Includes problematisch werden, daher finde ich ein Tool wie Visual Assist X (1 ) hilft bei solchen Dingen. Es hat eine Funktion, die Verweise auf Dinge finden kann, so dass Sie leicht herausfinden können, wo etwas definiert / deklariert / enthalten ist usw. Es hat auch viele andere nützliche Funktionen, daher halte ich es für ziemlich nützlich.

Es gibt wahrscheinlich andere Tools / Plugins, die eine referenzierende Funktion haben, aber normalerweise als eine Funktion unter den anderen Refactoring- und Produktivitätsfunktionen des Dienstprogramms.

HTH

    
Synetech 13.07.2009 20:11
quelle
0

Es ist ziemlich langwierig, aber Sie können Ihren Weg bis zu einem #include suchen, indem Sie #error (und #pragma message) verwenden, um einzuschränken, welche Zeile die dritte Partei einzieht. Ich habe dies im Fall einer einzelnen Datei getan, die ich aufzuspüren versuchte, aber es klingt, als ob dein Problem größer ist, also wäre wahrscheinlich eines der Tools, die andere erwähnt haben, effektiver.

    
Chadwick 13.07.2009 21:29
quelle

Tags und Links