#include <stdio.h>
#include <stdlib.h>

void assert_failed(const char *file, int line, const char *func, const char *cond)
{
	fprintf(stderr, "%s:%d: %s: Assertion `%s' failed.\n", file, line, func, cond);
	exit(1);
}

#define ASSERT(X) if(!(X))assert_failed(__FILE__, __LINE__, __func__, #X);

int main()
{
	#define MAX(a,b) ((a)>(b)?a:b)
	ASSERT(MAX(1,2)==1)
}