1 #pragma clang system_header 2 3 int abort(); 4 5 #ifdef NDEBUG 6 #define assert(x) 1 7 #else 8 #define assert(x) \ 9 if (!(x)) \ 10 (void)abort() 11 #endif 12 13 void print(...); 14 #define assert2(e) (__builtin_expect(!(e), 0) ? \ 15 print (#e, __FILE__, __LINE__) : (void)0) 16 17 #ifdef NDEBUG 18 #define my_assert(x) 1 19 #else 20 #define my_assert(x) \ 21 ((void)((x) ? 1 : abort())) 22 #endif 23 24 #ifdef NDEBUG 25 #define not_my_assert(x) 1 26 #else 27 #define not_my_assert(x) \ 28 if (!(x)) \ 29 (void)abort() 30 #endif 31 32 #define real_assert(x) ((void)((x) ? 1 : abort())) 33 #define wrap1(x) real_assert(x) 34 #define wrap2(x) wrap1(x) 35 #define convoluted_assert(x) wrap2(x) 36 37 #define msvc_assert(expression) (void)( \ 38 (!!(expression)) || \ 39 (abort(), 0) \ 40 ) 41