How can I completely disable calls to assert()?

前端 未结 5 1855
别跟我提以往
别跟我提以往 2020-11-28 08:02

My code is full of calls to assert(condition). In the debug version I use g++ -g which triggers my assertions. Unexpectedly, the same assertions ar

相关标签:
5条回答
  • 2020-11-28 08:12

    Yes, define NDEBUG on the command line/build system with the preprocessor/compiler option -DNDEBUG.

    This has nothing to do with the debugging info inserted by -g.

    0 讨论(0)
  • 2020-11-28 08:14

    You can either disable assertions completely by

    #define NDEBUG
    #include <assert.h>
    

    or you can set NDEBUG (via -DNDEBUG) in your makefile/build procedure depending on whether you want a productive or dev version.

    0 讨论(0)
  • 2020-11-28 08:33

    You must #define NDEBUG (or use the flag -DNDEBUG with g++) this will disable assert as long as it's defined before the inclusion of the assert header file.

    0 讨论(0)
  • 2020-11-28 08:35

    The -g flag doesn't affect the operation of assert, it just ensures that various debugging symbols are available.

    Setting NDEBUG is the standard (as in official, ISO standard) way of disabling assertions.

    0 讨论(0)
  • 2020-11-28 08:36

    Use #define NDEBUG

    7.2 Diagnostics

    1 The header defines the assert macro and refers to another macro,

    NDEBUG

    which is not defined by <assert.h>. If NDEBUG is defined as a macro name at the point in the source file where is included, the assert macro is defined simply as

    #define assert(ignore) ((void)0)

    The assert macro is redefined according to the current state of NDEBUG each time that <assert.h> is included.

    0 讨论(0)
提交回复
热议问题