C assert
assert() is implemented as a macro; if the expression tested has side-effects, program behavior will be different depending on whether NDEBUG is defined. This may create Heisenbugs which go away when debugging is turned on. See Also abort(3), assert_perror(3), exit(3) Referenced By al_assert(3), expackf(3), register_assert_handler(3), trace(3)