-#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)
+#define _assert(e) assert(e)
+#ifdef __STDC__
+#define assert(e) ((e) ? (void)0 : __assert(__FILE__, __LINE__, #e))
+#else /* PCC */
+#define assert(e) ((e) ? (void)0 : __assert(__FILE__, __LINE__, "e"))