/* The system header file assert.h is the source of potential
* heisenbugs. Doing something inside an assert that changes
* the state of the program, will not change said state when
* NDEBUG is used as intended. This header removes that problem.
*
* Example of the problem:
*
* int bork = 1;
* assert(bork++);
* printf("%d\n", bork); // if NDEBUG is set, prints 1
* // if NDEBUG is not set, prints 2
*/
#ifndef NDEBUG
# include <assert.h>
#else
# define assert(x) (void)(x)
#endif