Wie finde ich doppelte Header in einer großen Lösung in MSVC ++ 2005 oder 2008?
-
03-07-2019 - |
Frage
In Visual Studio (C ++), ist es eine Möglichkeit, leicht doppelte Überschriften zu finden, die in CPP-Dateien definiert werden?
Ich versuche auch, Wege zu finden, diese Situation zu erkennen:
- A enthält B enthält C
- A enthält C
- => A muss nicht C enthalten
Lösung
Wenn Sie diese Situation erkennen wollen könnten Sie dieses Makro Anfang jeder Datei hinzufügen. Ersatz A für den Namen der Datei
#if A_H
#error "Duplicate include"
#else
#define A_H
#endif
Andere Tipps
Im Allgemeinen markieren Sie sie mit #pragma once, oder das Äquivalent Makroschutz und aufhören, über sie zu kümmern.
Wenn Sie MS-Compiler verwenden, können Sie eine Pragma Nachricht setzen (IIRC, es könnte ein Pragma Warnung oder Pragma Fehler stattdessen sein) mit dem Namen der Header-Datei ganz am Anfang jeder Header-Datei und Ihre Build-Ausgabe wird die Liste der jeder zeigen, die pro Datei enthalten ist wird die kompiliert wird.
Das wäre am besten für Ihre Header-Dateien arbeiten, da das System diejenigen nicht einbezogen werden.
Wenn Sie alle enthalten Header, um zu sehen, die Kompilierungsoptionen bearbeiten schließen / P (Vorprozess in eine Datei) , die Ihren Code nicht kompiliert werden, sondern das Pre-processer in eine Datei umleiten wird, können Sie dann grep durch sie die # include-Anweisungen zu sehen. Beachten Sie diese Dateien sehr groß sein wird.
PC-Lint (und wahrscheinlich auch andere Fussel-Tools) können nicht verwendete zeigen Include-Dateien.