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
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
.
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.
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.
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.
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.