Debug und Release kompilierung mit unterschiedlichem Code



  • Hallo,

    ich habe eine Applkation die ich im DebugModu mit einigen "Features" komilieren will. Diese sollen aber im Release nicht auftauchen. Mir ist es jetzt aber ein bisschen zu dumm jedes mal alles als Kommentar zu markieren.
    Da gibt es doch auf jeden fall was.. Kann mir jemand auf die Sprünge helfen? Arbeite mit den VS2008.

    Danke



  • #ifndef NDEBUG
       // hier dein Release Code
    #else
       // hier dein Debug Code
    #endif
    


  • Falls deine 'Features' zufällig Debug-Ausgaben sind: dafür bietet die WinAPI z.B. auch OutputDebugString.



  • Ja, ist es aber ich arbeite da nur mit der Funktion InternetGetLastResponseInfo() aus der API. Allerdings Es kommt halt recht viel Code im Debugmodus dazu den ich ja auf keinen Fall im Releas haben möchte.
    Leider funktioiert dein Beispiel nicht theta:-(



  • secondsun schrieb:

    Ja, ist es aber ich arbeite da nur mit der Funktion InternetGetLastResponseInfo() aus der API.

    Ich verstehe den Zusammenhang zwischen der Funktion und OutputDebugString nicht... 😕

    secondsun schrieb:

    Allerdings Es kommt halt recht viel Code im Debugmodus dazu den ich ja auf keinen Fall im Releas haben möchte.

    OutputDebugString wird nur im Debug-Buid ausgeführt. Wenn du allerdings einen String vorher zusammensetzt (z.B. um Variableninhalte auszugeben), ist das natürlich im Release-Build mit drin. Abhilfe schafft der Präprozessor, wie in theta's Beispiel.

    secondsun schrieb:

    Leider funktioiert dein Beispiel nicht theta:-(

    Eine gute Idee wäre, mal zu sagen, was denn nicht funktioniert. Ich kann mich aber auch irren... 😉

    EDIT: Probier mal statt NDEBUG _DEBUG.



  • sorry, war mein Fehler
    mit _DEBUG gehts
    danke;-)



  • Sowie ich es im Kopf habe, ist NDEBUG von Standard und _DEBUG nicht (sondern z.B. vom MSVC Compiler).

    Ev. ist NDEBUG im cassert Header.
    Simon



  • theta schrieb:

    #ifndef NDEBUG
       // hier dein Release Code
    #else
       // hier dein Debug Code
    #endif
    

    Du hast es hier gerade verwechselt, NDEBUG ist Release (no debug). Je nach Sichtweise auch nur ein "n" zuviel in #ifndef . 😉


Anmelden zum Antworten