Line | |
---|
1 | #ifndef _ASSERT_H |
---|
2 | #define _ASSERT_H |
---|
3 | |
---|
4 | |
---|
5 | #ifdef __PRETTY_FUNCTION__ |
---|
6 | #define __ASSERT_FUNCTION __PRETTY_FUNCTION__ |
---|
7 | #else |
---|
8 | # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L |
---|
9 | # define __ASSERT_FUNCTION __func__ |
---|
10 | # else |
---|
11 | # define __ASSERT_FUNCTION ((const char *) 0) |
---|
12 | # endif |
---|
13 | #endif |
---|
14 | |
---|
15 | #undef assert |
---|
16 | #ifdef NDEBUG |
---|
17 | #define assert(expr) ((void)0) |
---|
18 | #else |
---|
19 | |
---|
20 | /* This prints an "Assertion failed" message and aborts. */ |
---|
21 | extern void __assert_fail (const char *__assertion, const char *__file, |
---|
22 | unsigned int __line, const char *__function) |
---|
23 | __attribute__ ((__noreturn__)); |
---|
24 | |
---|
25 | #ifdef expect |
---|
26 | # define assert(expr) \ |
---|
27 | ((void) (expect((long)(expr),0) ? 0 : \ |
---|
28 | (__assert_fail (#expr, \ |
---|
29 | __FILE__, __LINE__, __ASSERT_FUNCTION), 0))) |
---|
30 | #else |
---|
31 | # define assert(expr) \ |
---|
32 | ((void) ((expr) ? 0 : \ |
---|
33 | (__assert_fail (#expr, \ |
---|
34 | __FILE__, __LINE__, __ASSERT_FUNCTION), 0))) |
---|
35 | #endif |
---|
36 | #endif |
---|
37 | |
---|
38 | |
---|
39 | #endif |
---|
Note: See
TracBrowser
for help on using the repository browser.