/* ** assert.h> can be included several times and the assert macro is redefined ** every time to match the definition of NDEBUG (7.2ยง1) */ #ifdef __ASSERT_H__ # undef __ASSERT_H__ # undef assert #endif #define __ASSERT_H__ #ifdef __cplusplus extern "C" { #endif /* Internal function that prints error message and aborts */ void __assert_fail(char const *__file, int __line, char const *__function, char const *__expression); #ifdef NDEBUG # define assert(ignore) ((void)0) #else # define assert(expression) \ ((expression) \ ? (void)0 \ : __assert_fail(__FILE__, __LINE__, __PRETTY_FUNCTION__, #expression)) #endif #ifndef __cplusplus # define static_assert _Static_assert #endif #ifdef __cplusplus } #endif