]>
Commit | Line | Data |
---|---|---|
3dc31f14 RS |
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) \ | |
252043ee | 16 | (printf ("%s:%u: failed assertion\n", file, lineno), \ |
3dc31f14 RS |
17 | abort (), 0) |
18 | ||
19 | #else | |
3dc31f14 | 20 | |
b076a285 | 21 | #if defined(__STDC__) || defined (__cplusplus) |
3dc31f14 | 22 | |
5faca127 | 23 | /* Defined in libgcc.a */ |
b076a285 RS |
24 | #ifdef __cplusplus |
25 | extern "C" { | |
cf126f71 | 26 | extern void __eprintf (const char *, const char *, unsigned, const char *); |
b076a285 RS |
27 | } |
28 | #else | |
cf126f71 | 29 | extern void __eprintf (const char *, const char *, unsigned, const char *); |
b076a285 | 30 | #endif |
e071c188 | 31 | |
3dc31f14 RS |
32 | #define assert(expression) \ |
33 | ((void) ((expression) ? 0 : __assert (#expression, __FILE__, __LINE__))) | |
34 | ||
35 | #define __assert(expression, file, line) \ | |
252043ee | 36 | (__eprintf ("%s:%u: failed assertion `%s'\n", \ |
3dc31f14 RS |
37 | file, line, expression), 0) |
38 | ||
b076a285 | 39 | #else /* no __STDC__ and not C++; i.e. -traditional. */ |
3dc31f14 | 40 | |
e071c188 RS |
41 | extern void __eprintf (); /* Defined in libgcc.a */ |
42 | ||
3dc31f14 RS |
43 | #define assert(expression) \ |
44 | ((void) ((expression) ? 0 : __assert (expression, __FILE__, __LINE__))) | |
45 | ||
46 | #define __assert(expression, file, lineno) \ | |
252043ee | 47 | (__eprintf ("%s:%u: failed assertion `%s'\n", \ |
3dc31f14 RS |
48 | file, lineno, "expression"), 0) |
49 | ||
b076a285 | 50 | #endif /* no __STDC__ and not C++; i.e. -traditional. */ |
3dc31f14 RS |
51 | #endif /* no __GNU__; i.e., /bin/cc. */ |
52 | #endif |