home *** CD-ROM | disk | FTP | other *** search
- /* @(#) assert.h 2.1 87/12/25 12:21:32 */
-
- /*
- The contents of this file are hereby released to the public domain.
-
- -- Rahul Dhesi 1986/11/14
-
- Defines a macro assert() that causes an assertion error if the assertion
- fails. For some useful information about this see "Reliable Data
- Structures in C" by Thomas Plum page 1-21.
-
- Conditional compilation:
-
- If NDEBUG is defined then
- assert() is defined as null so all assertions vanish
- else
- if DUMB_ASS is defined then -- use dumb assertions
- assertions print a message but not the filename and line number
- else
- assertions print message including filename and line number
- endif
- endif
-
- Note:
- DUMB_ASS should be defined if the preprocessor does not support the
- varying constants __FILE__ and __LINE__, which are supposed to hold the
- name of the current file and the number of the current line.
-
- */
-
- #ifndef NDEBUG
- /* assert() macro defined only if NDEBUG is undefined */
- #ifdef DUMB_ASS
- #define assert(E) \
- { if (!(E)) \
- prterror ('w', "Assertion error.\n"); \
- }
- #else
- /* else not DUMB_ASS */
- #define assert(E) \
- { if (!(E)) \
- prterror ('w',"Assertion error in %s:%d.\n", __FILE__, __LINE__); \
- }
- #endif /* not DUMB_ASS */
- #else
- /* else NDEBUG */
- #define assert(E)
- #endif /* NDEBUG */
-