none
Bug bei eingeschalteter Präprozessor ausgabe? RRS feed

  • Frage

  • schaltet man bei einem simplen hallo world programm die compiler option "präprozess to a file" (/P) an tritt folgendes auf:

    - compile fehler die vorher ausgegeben wurden treten nicht mehr auf oder werden nicht mehr angezeigt...

    - die obj dateien werden nicht erstellt, der linker startet später und kann diese natürlich nicht finden...

     

    zusatz infos:

    hatte die option angeschaltet um einen fehler zu finden... eine header verwendet einen wert der in einer anderen header definiert wurde.. die header ist per include hinzugefügt aber trozdem sagt der compiler (ohne /P) dass der wert nicht definiert sei...

    es handelt sich um die spinlock_w32.hpp und die interlocked.hpp aus der boost lib...

    nachdem ich die .i welche durch die /P option geschrieben wurde gelesehn hatte nehme ich nun an, dass eine von mir verwendete andere lib auch die boost lib verwendet allerdings mit einer anderen version.. die header nicht zwei mal eingelesen wird obwohl es eigendlich ja nicht die selbe ist...

    fragen:

    fehler im compiler? ist dieses verhalten wirklich gewünscht?

    mache ich etwas falsch?

    Freitag, 27. August 2010 16:03

Antworten

Alle Antworten

  • Das Verhalten war schon in allen VC Versionen so und ist genau so dokumentiert:

    http://msdn.microsoft.com/en-us/library/8z9z0bx6(VS.100).aspx

    Zitat:
    The /P option suppresses compilation. It does not produce an .obj file, even if you use /Fo (Object File Name). You must resubmit the preprocessed file for compilation. /P also suppresses the output files from the /FA, /Fa, and /Fm options. For more information, see /FA, /Fa (Listing File) and /Fm (Name Mapfile).

    Manchmal lohnt sich zuerst mal ein Blick in die Doku ;)

    Verwende /showincludes um die Reihenfolge der Includes zu ermitteln. BTW: evtl. gibt es einen define, der das Compilieren der Werte verhindert.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Samstag, 28. August 2010 15:30
    Moderator
  • danke erstmal - finde dieses verhalten dann doof...

    aber trotzdem scheint es manche fehler nicht auszugeben und damit vermute ich dass das ergebniss möglicherweise vom echten präcompiler ergebniss abweicht...

    Sonntag, 29. August 2010 12:53
  • Kann ich nicht nachvollziehen. Ich kann die Präprozessoe Ausgabe anschließend ohne weiteres korrekt kompilieren. Bzw. kann entsprechende Fehler genauso erzeugen...

    Immer eine Frage was Du eigentlich willst und wem Du auf den Versen bist.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Dienstag, 31. August 2010 10:30
    Moderator