home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 9 Archive / 09-Archive.zip / ZOO21E.EXE / ASSERT.H < prev    next >
C/C++ Source or Header  |  1991-07-11  |  1KB  |  49 lines

  1. /* @(#) assert.h 2.1 87/12/25 12:21:32 */
  2.  
  3. /*
  4. The contents of this file are hereby released to the public domain.
  5.  
  6.                            -- Rahul Dhesi 1991/07/04
  7.  
  8. Defines a macro assert() that causes an assertion error if the assertion
  9. fails.
  10.  
  11. Conditional compilation:
  12.  
  13.    If NDEBUG is defined then
  14.       assert() is defined as null so all assertions vanish
  15.    else
  16.         if __FILE__ and __LINE__ are defined then
  17.          assertions print message including filename and line number
  18.       else
  19.          assertions print a message but not the filename and line number
  20.       endif
  21.    endif
  22. */
  23.  
  24. #ifdef NDEBUG
  25. # define assert(E)
  26. #else
  27.  
  28. #undef LINE_FILE
  29.  
  30. #ifdef __LINE__
  31. # ifdef __FILE__
  32. #  define LINE_FILE
  33. # endif
  34. #endif
  35.  
  36. #ifdef LINE_FILE
  37. # undef LINE_FILE
  38. # define assert(E) \
  39.    { if (!(E)) \
  40.       prterror ('w',"Assertion error in %s:%d.\n", __FILE__, __LINE__); \
  41.    }
  42. #else
  43. # define assert(E) \
  44.    { if (!(E)) \
  45.       prterror ('w', "Assertion error.\n"); \
  46.    }
  47. #endif
  48. #endif /* NDEBUG */
  49.