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


Anmelden zum Antworten