0,0 → 1,50 |
/* |
assert.h |
*/ |
#ifndef _NEWLIB_ASSERT_H |
#define _NEWLIB_ASSERT_H |
|
#ifdef __cplusplus |
extern "C" { |
#endif |
|
#include "_ansi.h" |
|
#undef assert |
|
#ifdef NDEBUG /* required by ANSI standard */ |
# define assert(__e) ((void)0) |
#else |
# define assert(__e) ((__e) ? (void)0 : __assert_func (__FILE__, __LINE__, \ |
__ASSERT_FUNC, #__e)) |
|
# ifndef __ASSERT_FUNC |
/* Use g++'s demangled names in C++. */ |
# if defined __cplusplus && defined __GNUC__ |
# define __ASSERT_FUNC __PRETTY_FUNCTION__ |
|
/* C99 requires the use of __func__. */ |
# elif __STDC_VERSION__ >= 199901L |
# define __ASSERT_FUNC __func__ |
|
/* Older versions of gcc don't have __func__ but can use __FUNCTION__. */ |
# elif __GNUC__ >= 2 |
# define __ASSERT_FUNC __FUNCTION__ |
|
/* failed to detect __func__ support. */ |
# else |
# define __ASSERT_FUNC ((char *) 0) |
# endif |
# endif /* !__ASSERT_FUNC */ |
#endif /* !NDEBUG */ |
|
void _EXFUN(__assert, (const char *, int, const char *) |
_ATTRIBUTE ((__noreturn__))); |
void _EXFUN(__assert_func, (const char *, int, const char *, const char *) |
_ATTRIBUTE ((__noreturn__))); |
|
#ifdef __cplusplus |
} |
#endif |
|
#endif /* _NEWLIB_ASSERT_H */ |