Angenommen, ich habe eine Quelldatei mit vielen Präprozessoranweisungen. Ist es möglich zu sehen, wie es aussieht, nachdem der Präprozessor damit fertig ist?
204
Angenommen, ich habe eine Quelldatei mit vielen Präprozessoranweisungen. Ist es möglich zu sehen, wie es aussieht, nachdem der Präprozessor damit fertig ist?
Antworten:
cl.exe
Die Befehlszeilenschnittstelle zu Microsoft Visual C ++ bietet drei verschiedene Optionen für die Ausgabe der vorverarbeiteten Datei (daher die Inkonsistenz in den vorherigen Antworten zu Visual C ++):/E
: Vorverarbeitung zu stdout (ähnlich der Option -E von GCC)/P
: Vorverarbeitung zur Datei/EP
: Vorverarbeitung zu stdout ohne # line-DirektivenWenn Sie eine Datei ohne # line-Direktiven vorverarbeiten möchten, kombinieren Sie die Optionen
/P
und/EP
.quelle
/P
die Erzeugung von obj-Dateien unterdrückt wird. Wenn Sie also/P
Optionen eingeben, wird möglicherweise ein Link-Fehler angezeigt, der besagt, dass einige obj-Dateien nicht gefunden werden können, da sie tatsächlich überhaupt nicht generiert werden.VS Developer command prompt
und NICHT in befinden,Command prompt
wenn Sie versuchen, MS compiler (cl
) zu verwenden. Der Compiler ist in der herkömmlichen Eingabeaufforderung nicht verfügbar.Die meisten Compiler haben die Möglichkeit, nur den Präprozessor auszuführen. zB liefert gcc -E:
Sie können also einfach ausführen:
Wenn Sie eine solche Option nicht finden, finden Sie auch nur den C-Präprozessor auf Ihrem Computer. Es heißt normalerweise cpp und ist wahrscheinlich schon auf deinem Weg. Rufen Sie es so auf:
Wenn Sie Header aus anderen Verzeichnissen einfügen müssen, können Sie -I / path / to / include / dir an eines dieser Verzeichnisse übergeben, genau wie bei einer regulären Kompilierung.
Für Windows überlasse ich es anderen Postern, Antworten zu geben, da ich dort kein Experte bin.
quelle
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei und gehen Sie zu Eigenschaften. Unter Konfigurationseigenschaften-> C / C ++ -> Präprozessor suchen Sie nach "Vorverarbeitete Datei generieren". Klicken Sie dann im Projektmappen-Explorer mit der rechten Maustaste auf die Datei und wählen Sie "Kompilieren". Die vorverarbeitete Datei wird im Ausgabeverzeichnis (z. B. Release, Debug) mit der Erweiterung .i erstellt (danke an Steed für seinen Kommentar).
quelle
Release
,Debug
) mit einer Verlängerung.i
.In der Regel müssen Sie die Ausgabe des Präprozessors nachbearbeiten. Andernfalls werden alle Makros nur zu einem Liner erweitert, was schwer zu lesen und zu debuggen ist. Für C-Code würde etwa Folgendes ausreichen:
Für C ++ - Code ist es tatsächlich viel schwieriger. Für GCC / g ++ fand ich dieses Perl-Skript nützlich.
quelle
Ich weiß nichts über Microsoft Compiler, aber auf GCC können Sie dies verwenden:
Wenn Sie Kommentare sehen möchten, verwenden Sie diese:
Weitere Optionen finden Sie auf dieser Seite .
quelle
Versuchen Sie,
cl /EP
wenn Sie den C ++ - Compiler von Microsoft verwenden.quelle
In Visual Studio können Sie eine Datei (oder ein Projekt) mit / P kompilieren.
quelle
Wie bk1e und Andreas M. geantwortet haben, bewirkt die Option / P für den Compiler, dass eine Datei vorverarbeitet wird. In meinem Projekt mit VS2005 und Platform Builder (für einen eingebetteten ARM-Prozessor) wurde im Dialogfeld (wie von Jim B beschrieben) keine Option zum Aktivieren dieser Option angezeigt.
Ich konnte CL manuell ausführen und / P hinzufügen, aber es schlug fehl, weil ich nicht alle geeigneten Befehlszeilenoptionen kannte, die von Platform Builder während des vollständigen Builds unsichtbar aktiviert wurden. Also musste ich all diese Optionen kennen.
Meine Lösung bestand darin, in der Datei build.log nach der ausgeführten Zeile zu suchen
CL blah-blah-blah myfile.c
Ich habe diese Zeile in die Zwischenablage kopiert. Der Teil "bla-bla-bla" enthielt die Build-Optionen und war riesig.
Zurück in der IDE habe ich mit der rechten Maustaste auf myfile.c geklickt, "Build-Fenster öffnen" ausgewählt und dann in diesem Fenster die Build-Befehlszeile eingefügt und ein "/ P" hinzugefügt.
CL /P blah-blah-blah myfile.c
Getan. Die Datei myfile.i wurde erstellt, die die Präprozessorausgabe enthielt.
quelle
CPIP ist ein neuer C / C ++ - Präprozessor, der in Python geschrieben wurde. Wenn Sie eine detaillierte visuelle Darstellung einer vorverarbeiteten Datei wünschen, probieren Sie sie aus.
quelle
Unter Windows besteht eine einfache einzeilige Antwort auf diese Frage darin, den folgenden Befehl in der DOS-Eingabeaufforderung zu verwenden, um die vorverarbeitete Datei anzuzeigen:
Dadurch wird eine Datei mit dem Namen myprogram.i generiert . Öffnen Sie es und achten Sie auf Ihre erweiterten Präprozessoren.
quelle