]> pd.if.org Git - pdclib/commitdiff
assert.h can be included multiple times, redefining the macro.
authorMartin Baute <solar@rootdirectory.de>
Mon, 7 Mar 2016 05:58:37 +0000 (06:58 +0100)
committerMartin Baute <solar@rootdirectory.de>
Mon, 7 Mar 2016 05:58:37 +0000 (06:58 +0100)
includes/assert.h

index cb5c47e4bd2875ba8e1874c96c6e6b7c951d0562..0d06472fbdaac089c85cd8c6ad5715460c669e78 100644 (file)
@@ -6,16 +6,34 @@
    Permission is granted to use, modify, and / or redistribute at will.
 */
 
-#ifndef _PDCLIB_ASSERT_H
-#define _PDCLIB_ASSERT_H _PDCLIB_ASSERT_H
 #include <_PDCLIB_aux.h>
 #include <_PDCLIB_config.h>
+
+/*
+   Defines a macro assert() that, depending on the value of the preprocessor
+   symbol NDEBUG, does
+   * evaluate to a void expression if NDEBUG is set OR the parameter expression
+     evaluates to true;
+   * print an error message and terminates the program if NDEBUG is not set AND
+     the parameter expression evaluates to false.
+  The error message contains the parameter expression, name of the source file
+  (__FILE__), line number (__LINE__), and (from C99 onward) name of the function
+  (__func__).
+   The header can be included MULTIPLE times, and redefines the macro depending
+   on the current setting of NDEBUG.
+*/
+
 _PDCLIB_BEGIN_EXTERN_C
 
+#ifndef _PDCLIB_ASSERT_H
+#define _PDCLIB_ASSERT_H _PDCLIB_ASSERT_H
+
 /* Functions _NOT_ tagged noreturn as this hampers debugging */
 void _PDCLIB_assert99( char const * const, char const * const, char const * const );
 void _PDCLIB_assert89( char const * const );
 
+#endif
+
 /* If NDEBUG is set, assert() is a null operation. */
 #undef assert
 
@@ -49,5 +67,3 @@ void _PDCLIB_assert89( char const * const );
 #endif
 
 _PDCLIB_END_EXTERN_C
-#endif
-