+ This file is part of the Public Domain C Library (PDCLib).
+ Permission is granted to use, modify, and / or redistribute at will.
+*/
+
+#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.
+*/
+
+#ifndef _PDCLIB_ASSERT_H
+#define _PDCLIB_ASSERT_H _PDCLIB_ASSERT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* 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 );
+
+#ifdef __cplusplus
+}
+#endif
+
+#if _PDCLIB_C_VERSION >= 2011
+#define static_assert _Static_assert
+#else
+#define static_assert( e, m )
+#endif
+
+#endif
+
+/* If NDEBUG is set, assert() is a null operation. */