home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Headers / ansi / assert.h < prev    next >
C/C++ Source or Header  |  1995-01-23  |  1KB  |  49 lines

  1. /* Copyright (c) 1988, 1992 NeXT Computer, Inc. */
  2.  
  3. #ifndef _ASSERT_H
  4. #define _ASSERT_H
  5. /* for BSD compatibility */
  6. #define _assert(x) assert(x)
  7. #endif /* _ASSERT_H */
  8.  
  9. /* Allow multiple inclusions of `assert.h' with different settings
  10.  * of NDEBUG. */
  11.  
  12. #undef assert
  13.  
  14. #ifdef NDEBUG
  15.  
  16. #define assert(expression) ((void)0)
  17.  
  18. #else    /* !NDEBUG */
  19.  
  20. #ifdef __STRICT_BSD__
  21. extern void abort(void);
  22. #define assert(expression) \
  23.   ((expression) ? (void)0 : \
  24.    (fprintf (stderr, "Assertion failed: " #expression \
  25.       ", file " __FILE__ ", line %d.\n", __LINE__), \
  26.     abort ()))
  27.  
  28. #else    /* !__STRICT_BSD__ */
  29.  
  30. #ifdef __STDC__
  31.  
  32. extern void __eprintf(const char *, const char *, int, const char *);
  33. #define assert(expression)  \
  34.   ((void) ((expression) ? 0 : __assert(#expression, __FILE__, __LINE__)))
  35.  
  36. #else /* !__STDC__ */
  37.  
  38. extern void __eprintf();
  39. #define assert(expression)  \
  40.   ((void) ((expression) ? 0 : __assert("expression", __FILE__, __LINE__)))
  41.  
  42. #endif    /* !__STDC__ */
  43.  
  44. #define __assert(expression, file, line) \
  45.   (__eprintf("%s:%u: failed assertion `%s'\n", file, line, expression), 0)
  46.  
  47. #endif    /* !__STRICT_BSD__ */
  48. #endif    /* !NDEBUG */
  49.