source: trunk/third/gcc/assert.h @ 8834

Revision 8834, 1.5 KB checked in by ghudson, 28 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r8833, which included commits to RCS files with non-trunk default branches.
Line 
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
25extern "C" {
26extern void __eprintf (const char *, const char *, unsigned, const char *)
27    __attribute__ ((noreturn));
28}
29#else
30extern 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
43extern 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
Note: See TracBrowser for help on using the repository browser.