C++ Präprozessor
-
Hi,
ich würde gerne einmal anschauen wie der Quelltext aussieht, nachdem der Präprozessor ihn verarbeitet hat.
Unter Linux kann ich ja den Quelltext mit g++ -E quelldatei.cpp nur durch den Präprozessor jagen, allerdings sehe ich das Endresultat nicht. Die option -v bietet auch nur Meldungen aber nicht das Ergebnis.
Der Grund warum ich das haben möchte ist dass ich einen Bug in einem komplexen #define Konstrukt hatte und mir dann nur die Zeilennummer des Fehlers angegeben wird, das #define Konstrukt ist allerdings recht lange (geht über mehrere Zeilen die mit \ verbunden sind).
Hätte ich mir den Output des Präprozessors anschauen können, wäre mir das viel schneller aufgefallen...
danke
ciao
-
maxip schrieb:
Unter Linux kann ich ja den Quelltext mit g++ -E quelldatei.cpp nur durch den Präprozessor jagen, allerdings sehe ich das Endresultat nicht.
Ich sehe den Output auf der Konsole. Irgendwas machst Du falsch (TM).
-
Weiss jemand, wie das unter MSVC++ funktioniert?
-
Der Grund warum ich das haben möchte ist dass ich einen Bug in einem komplexen #define Konstrukt hatte
Noch ein weiterer Beweis dafür, das man Makros meiden sollte. Ich sage nur: "Wer nicht hören will, muss fühlen!" :p
-
Nexus schrieb:
Weiss jemand, wie das unter MSVC++ funktioniert?
Weiß jemand (außer den Entwicklern bei M$) ob der MS-Compiler Präprozessor und Lexer überhaupt so weit getrennt laufen lässt dass das möglich wäre?
HansiHinterseher schrieb:
Der Grund warum ich das haben möchte ist dass ich einen Bug in einem komplexen #define Konstrukt hatte
Noch ein weiterer Beweis dafür, das man Makros meiden sollte. Ich sage nur: "Wer nicht hören will, muss fühlen!" :p
Dass jemand Fehler in einem Makro einbaut ist kein Beweis, dass man sie meiden sollte - sonst müsstest du dieses Forum meiden ("..., dass man...")

Wenn man lange Code-Schnipsel nicht mit templates o.ä., also mit Standard C++-Mitteln vervielfältigen kann, sind bestimmte Makro-Konstrukte durchaus eine legale Alternative, trotz der debug-Schwierigkeiten (die ja einer der Hauptgründe gegen Makros sind).
-
pumuckl schrieb:
Weiß jemand (außer den Entwicklern bei M$) ob der MS-Compiler Präprozessor und Lexer überhaupt so weit getrennt laufen lässt dass das möglich wäre?
Schau mal in den Einstellungen im VS unter C/C++ / Preprocessor, da geht das. Alternativ: Kommandozeile "/P" oder "/EP /P"

-
wenn du im projekt view auf eine c/cpp Datei rechts draufklickst kannst du unter eigenschaften
einen dialog öffnen.
da unter c/c++ preprocesor/generate preprocessed file
Das fiel hat die endung .i