1#include <features.h> 2 3#undef assert 4#ifndef MUSL_ASSERT_H 5#define MUSL_ASSERT_H 6 7#ifdef __cplusplus 8extern "C" { 9#endif 10typedef enum Assert_Status { 11 ASSERT_ABORT, 12 ASSERT_RETRY, 13 ASSERT_IGNORE 14}Assert_Status; 15 16typedef struct AssertFailureInfo { 17 char *expression; 18 char *file; 19 char *function; 20 int line; 21}AssertFailureInfo; 22 23typedef Assert_Status(*assert_call)(AssertFailureInfo assert_fail); 24void set_assert_callback(assert_call cb); 25 26#ifdef __cplusplus 27} 28#endif 29#endif 30 31#ifdef NDEBUG 32#define assert(x) (void)0 33#else 34#define assert(x) ((void)((x) || (__assert_fail(#x, __FILE__, __LINE__, __func__),0))) 35#endif 36 37#if __STDC_VERSION__ >= 201112L && !defined(__cplusplus) 38#define static_assert _Static_assert 39#endif 40 41#ifdef __cplusplus 42extern "C" { 43#endif 44 45void __assert_fail (const char *, const char *, int, const char *); 46 47#ifdef __cplusplus 48} 49#endif 50