assert und kompilieren



  • Hallo,
    ich bin neu in C/C++ und wollte fragen ob man code der assertions (assert()) enthält auch so kompilieren kann dass die asserts nicht enthalten sind. Man könnte das natürlich über Präprozessor realisieren aber gibt es da vielleicht sowas wie ein compiler-flag oder sowas? Oder wie geht man normalerweise damit um?

    Danke



  • Wenn das Makro NDEBUG definiert ist, macht assert nichts.

    Einstellbar mit einem Compilerflag z.B. -DNDEBUG.



  • #ifdef ENABLE_ASSERT
    #define MY_ASSERT(expr) assert(expr)
    #else
    #define MY_ASSERT(expr) (expr)
    #endif
    

    Mach's doch so.

    DNDEBUG schrieb:

    Wenn das Makro NDEBUG definiert ist, macht assert nichts.

    Einstellbar mit einem Compilerflag z.B. -DNDEBUG.

    Dann wird aber auch die Expression des asserts nicht ausgeführt - was er doch will.

    # define assert(expr)		(__ASSERT_VOID_CAST (0))
    


  • Microsoft Visual Studio hat dafür das Makro VERIFY . Im Debug Modus verhält es sich genau so wie assert , im Release Modus führt es nur den überprüften Ausdruck aus.



  • ahja danke euch. jetzt klappt es 🙂


Anmelden zum Antworten