1/* 2 * Copyright 2004-2012 Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _ASSERT_H_ 6#define _ASSERT_H_ 7 8 9#undef assert 10 11#ifndef NDEBUG 12 /* defining NDEBUG disables assert() functionality */ 13 14#ifdef __cplusplus 15extern "C" { 16#endif 17 18extern void __assert_fail(const char *assertion, const char *file, 19 unsigned int line, const char *function) 20 __attribute__ ((noreturn)); 21 22extern void __assert_perror_fail(int error, const char *file, 23 unsigned int line, const char *function) 24 __attribute__ ((noreturn)); 25 26#ifdef __cplusplus 27} 28#endif 29 30#define assert(assertion) \ 31 ((assertion) ? (void)0 : __assert_fail(#assertion, __FILE__, __LINE__, __PRETTY_FUNCTION__)) 32 33#else /* NDEBUG */ 34# define assert(condition) ((void)0) 35#endif 36 37#endif /* _ASSERT_H_ */ 38