#include #if defined(_MSC_VER) // Windows # define BREAK ::DebugBreak(); #elif defined(__i386__) && defined(__GNUC__) // gcc on some Intel processor # define BREAK __asm__ __volatile__ ( "int $3" ); #else // Hopefully, some other gcc # define BREAK ::abort() #endif #define ASSERT(test_expr, message) \ if (! (test_expr)) {\ printf("%s\nAssertion \"%s\" failed in %s at line %d.\n", \ message, #test_expr, __FILE__, __LINE__);\ BREAK;\ } int main(int argc, char** argv) { int x = 3; ASSERT(x > 4, "Something bad"); return 0; }