assert Beispiel



  • When you are developping, use the assert macro to detect errors as soon as they occur. This macro is defined in the include file <assert.h>, and is used that way :

    assert (expression) ;

    If expression is false, program will stop indicating which assertion failed.

    What is really nice with this macro, is that you can easily get rid of it for the production version of your code, by declaring #define NDEBUG.

    This is because the assert macro is defined as :

    #ifndef NDEBUG
    #define assert(THETEST) ...
    #else
    #define assert(THETEST) ((void)0)
    #endif

    das funktioniert aber nicht:

    #include <assert.h>
    
    void main()
    {
      assert(1 ==2);
    }
    

    wenn ich as Inclusion

    #include <assert.h>
    #define NDEBUG
    

    definiert, assert(1 == 2) ist immer noch nicht deaktiviert.



  • erst define dann include?



  • !!! schrieb:

    erst define dann include?

    Genau. Besser ist aber, dass Makro NDEBUG projektweit (über einen passenden Compilerschalter wie z.B. -D beim gcc) zu setzen. So hat man dann auch garantiert überall die gleiche Ersetzung.


Anmelden zum Antworten