mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-12-22 22:56:53 +03:00
51 lines
1.2 KiB
C
51 lines
1.2 KiB
C
|
/*
|
||
|
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 */
|