-# ifndef NDEBUG
-# define _assert(ex) {if (!(ex)){fprintf(stderr,"Assertion failed: file %s, line %d\n", __FILE__, __LINE__);exit(1);}}
-# define assert(ex) {if (!(ex)){fprintf(stderr,"Assertion failed: file %s, line %d\n", __FILE__, __LINE__);exit(1);}}
-# else
-# define _assert(ex) ;
-# define assert(ex) ;
-# endif
+#ifdef NDEBUG
+#define assert
+#define _assert
+#else
+#define assert(expression) { \
+ if (!(expression)) { \
+ (void)fprintf(stderr, \
+ "assertion \"%s\" failed: file \"%s\", line %d\n", \
+ "expression", __FILE__, __LINE__); \
+ exit(2); \
+ } \
+}
+#define _assert(expression) assert(expression)
+#endif