Bedingete Kompilierung



  • Hallo Gemeinde,

    ich würde gerne Log-Meldungen im Debug Modus aus geben, jedoch nicht im Release.

    derzeit mache ich das unabhängig von der Kompilierung.

    #define _DEBUG_MODE
    #ifdef _DEBUG_MODE
    	CLog::getInstance().write("test", APP_DEBUG);
    #endif
    

    Kann ich das aber irgendwie von der Kompilierung abhängig? Also was ich brauche ist irgendwie eine Prüfung ob das Programm im Release oder im Debug Modus kompiliert wurde.

    Danke.

    so long
    jd



  • Du kannst auf das NDEBUG -Makro prüfen, das im Release-Modus definiert ist. Ich würde dir allerdings raten, das an einer zentralen Stelle zu regeln und nicht ständig Präprozessoranweisungen zwischen den Code platzieren.

    Beispiel:

    #ifdef NDEBUG
     #define LOG(TEXT) // im Release-Modus leer definieren
    #else
     #define LOG(TEXT) std::clog << TEXT << std::endl
    #endif
    

    Es gibt auch noch das _DEBUG -Makro, allerdings ist das nicht standardisiert.



  • Danke, das funktioniert.

    Natürlich wird das an zentraler stelle gemacht.

    so long
    jd


Anmelden zum Antworten