A more dynamic replacement for standard library asserts. Status: RELEASE.

A replacement for the system-level assert.h, called “emp_assert” Added functionality:

  • If compiled with Emscripten, will provide pop-up alerts in a web browser.

  • emp_assert can take additional arguments. If the assert is triggered, those extra arguments will be evaluated and printed.

  • if NDEBUG -or- EMP_NDEBUG is defined, the expression in emp_assert() is not evaluated.

  • if EMP_TDEBUG is defined, emp_assert() goes into test mode and records failures, but does not abort. (useful for unit tests of asserts)


int a = 6; emp_assert(a==5, a);

When compiled in debug mode (i.e. without the -DNDEBUG flag), this will trigger an assertion error and print the value of a.



NDEBUG hould trigger its EMP equivalent.

Require a specified condition to be true. If it is false, immediately halt execution. Print also extra information on any variables or expressions provided as variadic args. Note: If NDEBUG is defined, emp_assert() will not do anything. Due to macro parsing limitations, extra information will not be printed when compiling with MSVC.


static constexpr bool is_debug_mode = true