diff options
Diffstat (limited to 'include/assert.h')
| -rw-r--r-- | include/assert.h | 27 | 
1 files changed, 25 insertions, 2 deletions
diff --git a/include/assert.h b/include/assert.h index aef6cdf08..2612534cd 100644 --- a/include/assert.h +++ b/include/assert.h @@ -11,12 +11,35 @@  #else /* Not NDEBUG.  */ -extern void __assert __P((const char *, const char *, int)); +extern void __assert __P((const char *, const char *, int, const char *));  #define	assert(expr)							      \    ((void) ((expr) ||							      \  	   (__assert (__STRING(expr),				      \ -			   __FILE__, __LINE__), 0))) +			   __FILE__, __LINE__, __ASSERT_FUNCTION), 0))) + +   +/* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__' +   which contains the name of the function currently being defined. +#  define __ASSERT_FUNCTION	__PRETTY_FUNCTION__ +   This is broken in G++ before version 2.6. +   C9x has a similar variable called __func__, but prefer the GCC one since +   it demangles C++ function names.  */ +# ifdef __GNUC__ +#  if __GNUC__ > 2 || (__GNUC__ == 2 \ +		       && __GNUC_MINOR__ >= (defined __cplusplus ? 6 : 4)) +#   define __ASSERT_FUNCTION	__PRETTY_FUNCTION__ +#  else +#   define __ASSERT_FUNCTION	((__const char *) 0) +#  endif +# else +#  if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L +#   define __ASSERT_FUNCTION	__func__ +#  else +#   define __ASSERT_FUNCTION	((__const char *) 0) +#  endif +# endif +  #endif /* NDEBUG.  */  | 
