1234567891011121314151617181920212223242526272829303132333435 |
- /*
- * assert.h
- *
- * Define a common interface for assertions that builds for both the PAL
- * and libOS.
- *
- */
- #ifndef ASSERT_H
- #define ASSERT_H
- #include <stdnoreturn.h>
- #define COMPILE_TIME_ASSERT(pred) switch(0){case 0:case (pred):;}
- /* All environments should implement warn, which prints a non-optional debug
- * message. All environments should also implement __abort, which
- * terminates the process.
- */
- void warn (const char *format, ...) __attribute__((format(printf, 1, 2)));
- noreturn void __abort(void);
- # define assert(test) \
- ({ \
- long _val = (long)(test); \
- (!(_val)) \
- ? ({ \
- warn("assert failed " __FILE__ ":%d %s (value:%lx)\n", \
- __LINE__, #test, _val); \
- __abort(); }) \
- : (void)0; \
- })
- #endif
|