X-Git-Url: https://pd.if.org/git/?p=pdclib;a=blobdiff_plain;f=includes%2Fassert.h;h=7874167258675dcb713b9e2f69328db9f2e2b4ad;hp=fb6dbf1b1b63a5118cf523c3f2c6567b953b580f;hb=b41576197133c1211d6ec353faf93f505f573b8a;hpb=93ca2d813f86c52bb9bece81ca564d4831bff9e5 diff --git a/includes/assert.h b/includes/assert.h index fb6dbf1..7874167 100644 --- a/includes/assert.h +++ b/includes/assert.h @@ -6,44 +6,40 @@ Permission is granted to use, modify, and / or redistribute at will. */ -#ifndef _PDCLIB_AUX_H -#define _PDCLIB_AUX_H _PDCLIB_AUX_H +#ifndef _PDCLIB_ASSERT_H +#define _PDCLIB_ASSERT_H _PDCLIB_ASSERT_H #include <_PDCLIB_aux.h> -#endif - -#ifndef _PDCLIB_CONFIG_H -#define _PDCLIB_CONFIG_H _PDCLIB_CONFIG_H #include <_PDCLIB_config.h> -#endif +_PDCLIB_BEGIN_EXTERN_C -#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 +void _PDCLIB_assert99( char const * const, char const * const, char const * const ); +void _PDCLIB_assert89( char const * const ); /* If NDEBUG is set, assert() is a null operation. */ #undef assert #ifdef NDEBUG #define assert( ignore ) ( (void) 0 ) +#elif _PDCLIB_C_VERSION >= 99 +#define assert(expression) \ + do { if(!(expression)) \ + _PDCLIB_assert99("Assertion failed: " #expression \ + ", function ", __func__, \ + ", file " __FILE__ \ + ", line " _PDCLIB_symbol2string( __LINE__ ) \ + "." _PDCLIB_endl ); \ + } while(0) #else -#if _PDCLIB_C_VERSION == 99 -#define assert( expression ) ( ( expression ) ? (void) 0 \ - : _PDCLIB_assert( "Assertion failed: " #expression \ - ", function ", __func__, \ +#define assert(expression) \ + do { \ + if(!(expression)) \ + _PDCLIB_assert89( "Assertion failed: " #expression \ ", 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 ) ) + "." _PDCLIB_endl ); \ + } while(0) #endif + +_PDCLIB_END_EXTERN_C #endif