The assert.h file defines the assert() macro. If the NDEBUG macro is defined, then assert does nothing. Otherwise, assert() calls the auxiliary function _assert if the sole macro parameter of assert() evaluates to 0 (FALSE). Refer the following listing.
#ifdef NDEBUG #define assert(EX) #else #define assert(EX) ((EX) ? 0 : _assert(__LINE__, __FILE__)) #endif