X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=includes%2Fassert.h;h=fb6dbf1b1b63a5118cf523c3f2c6567b953b580f;hb=a448f97e288aa4bd84fdc8d553b335b8d0efb725;hp=7bd6e41a6ded9145224628d42479ec32ec0e2274;hpb=c8f799d852e3698468a78954d82588e841cc0b70;p=pdclib.old diff --git a/includes/assert.h b/includes/assert.h index 7bd6e41..fb6dbf1 100644 --- a/includes/assert.h +++ b/includes/assert.h @@ -1,37 +1,49 @@ -/* ---------------------------------------------------------------------------- - * $Id$ - * ---------------------------------------------------------------------------- - * Public Domain C Library - http://pdclib.sourceforge.net - * This code is Public Domain. Use, modify, and redistribute at will. - * ---------------------------------------------------------------------------- - * Diagnostics - * --------------------------------------------------------------------------*/ - -#ifndef _ASSERT_H -#define _ASSERT_H _ASSERT_H - -/* ---------------------------------------------------------------------------- - * AUXILIARY - * --------------------------------------------------------------------------*/ - -/* Helper function doing the print to stderr and call to abort(). */ -void __assert( char const * const expression, /* the tested expression */ - char const * const file, /* name of source file */ - char const * const function, /* name of function */ - int const line ); /* number of source file line */ - -#endif /* _ASSERT_H - note that the header guard ends here on purpose. The - assert macro is redefined upon each inclusion, in - dependence of NDEBUG. */ - -/* ---------------------------------------------------------------------------- - * DEFINES - * --------------------------------------------------------------------------*/ +/* $Id$ */ +/* 7.2 Diagnostics + + This file is part of the Public Domain C Library (PDCLib). + Permission is granted to use, modify, and / or redistribute at will. +*/ + +#ifndef _PDCLIB_AUX_H +#define _PDCLIB_AUX_H _PDCLIB_AUX_H +#include <_PDCLIB_aux.h> +#endif + +#ifndef _PDCLIB_CONFIG_H +#define _PDCLIB_CONFIG_H _PDCLIB_CONFIG_H +#include <_PDCLIB_config.h> +#endif + +#ifndef _PDCLIB_ASSERT_H +#define _PDCLIB_ASSERT_H _PDCLIB_ASSERT_H +#if _PDCLIB_C_VERSION == 99 +void _PDCLIB_assert( char const * const, char const * const, char const * const ); +#else +void _PDCLIB_assert( char const * const ); +#endif +#endif + +/* If NDEBUG is set, assert() is a null operation. */ #undef assert -#if defined NDEBUG -#define assert( x ) ( (void) 0 ) + +#ifdef NDEBUG +#define assert( ignore ) ( (void) 0 ) #else -#define assert( x ) ( x ) ? ( (void) 0 ) \ - : __assert( #x, __FILE__, __func__, __LINE__ ) +#if _PDCLIB_C_VERSION == 99 +#define assert( expression ) ( ( expression ) ? (void) 0 \ + : _PDCLIB_assert( "Assertion failed: " #expression \ + ", function ", __func__, \ + ", file " __FILE__ \ + ", line " _PDCLIB_symbol2string( __LINE__ ) \ + "." _PDCLIB_endl ) ) +#else +#define assert( expression ) ( ( expression ) ? (void) 0 \ + : _PDCLIB_assert( "Assertion failed: " #expression \ + ", file " __FILE__ \ + ", line " _PDCLIB_symbol2string( __LINE__ ) \ + "." _PDCLIB_endl ) ) +#endif #endif +