home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gcc-2.7.2.1-base.tgz / gcc-2.7.2.1-base.tar / fsf / gcc / assert.h < prev    next >
C/C++ Source or Header  |  1995-08-19  |  1KB  |  55 lines

  1. /* Allow this file to be included multiple times
  2.    with different settings of NDEBUG.  */
  3. #undef assert
  4. #undef __assert
  5.  
  6. #ifdef NDEBUG
  7. #define assert(ignore) ((void) 0)
  8. #else
  9.  
  10. #ifndef __GNUC__
  11.  
  12. #define assert(expression)  \
  13.   ((void) ((expression) ? 0 : __assert (expression, __FILE__, __LINE__)))
  14.  
  15. #define __assert(expression, file, lineno)  \
  16.   (printf ("%s:%u: failed assertion\n", file, lineno),    \
  17.    abort (), 0)
  18.  
  19. #else
  20.  
  21. #if defined(__STDC__) || defined (__cplusplus)
  22.  
  23. /* Defined in libgcc.a */
  24. #ifdef __cplusplus
  25. extern "C" {
  26. extern void __eprintf (const char *, const char *, unsigned, const char *)
  27.     __attribute__ ((noreturn));
  28. }
  29. #else
  30. extern void __eprintf (const char *, const char *, unsigned, const char *)
  31.     __attribute__ ((noreturn));
  32. #endif
  33.  
  34. #define assert(expression)  \
  35.   ((void) ((expression) ? 0 : __assert (#expression, __FILE__, __LINE__)))
  36.  
  37. #define __assert(expression, file, line)  \
  38.   (__eprintf ("%s:%u: failed assertion `%s'\n",        \
  39.           file, line, expression), 0)
  40.  
  41. #else /* no __STDC__ and not C++; i.e. -traditional.  */
  42.  
  43. extern void __eprintf () __attribute__ ((noreturn)); /* Defined in libgcc.a */
  44.  
  45. #define assert(expression)  \
  46.   ((void) ((expression) ? 0 : __assert (expression, __FILE__, __LINE__)))
  47.  
  48. #define __assert(expression, file, lineno)  \
  49.   (__eprintf ("%s:%u: failed assertion `%s'\n",        \
  50.           file, lineno, "expression"), 0)
  51.  
  52. #endif /* no __STDC__ and not C++; i.e. -traditional.  */
  53. #endif /* no __GNU__; i.e., /bin/cc.  */
  54. #endif
  55.