summaryrefslogtreecommitdiff
path: root/include/assert.h
diff options
context:
space:
mode:
authorKacper <kacper@mail.openlinux.dev>2025-12-07 20:10:31 +0100
committerKacper <kacper@mail.openlinux.dev>2025-12-07 20:10:31 +0100
commitfc00c656c96528112d05cf0edf8631bd5eaea446 (patch)
treea6e0e6c588191a8bd1c64afc3b7a258e3e66c236 /include/assert.h
Add build system scaffolding and libc headers
Diffstat (limited to 'include/assert.h')
-rw-r--r--include/assert.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/include/assert.h b/include/assert.h
new file mode 100644
index 00000000..f69aa43d
--- /dev/null
+++ b/include/assert.h
@@ -0,0 +1,39 @@
+#ifndef __ASSERT_H
+#define __ASSERT_H
+
+#ifdef NDEBUG
+#define assert(ignore) ((void)0)
+#else
+
+/**
+ * @def assert(expr)
+ * @brief Macro to perform runtime assertions.
+ *
+ * The assert() macro shall insert diagnostics into programs; it shall expand to
+ * a void expression. When it is executed, if expression (which shall have a
+ * scalar type) is false (that is, compares equal to 0), assert() shall write
+ * information about the particular call that failed on stderr and shall call
+ * abort(). The information written about the call that failed shall include the
+ * text of the argument, the name of the source file, the source file line
+ * number, and the name of the enclosing function; the latter are, respectively,
+ * the values of the preprocessing * macros __FILE__ and __LINE__ and of the
+ * identifier __func__. Forcing a definition of the name NDEBUG, either from the
+ * compiler command line or with the preprocessor control statement #define
+ * NDEBUG ahead of the #include <assert.h> statement, shall stop assertions from
+ * being compiled into the program.
+ *
+ * @param expr The expression to be evaluated.
+ *
+ * @see abort
+ */
+#define assert(__expr) \
+ ((__expr) ? \
+ (void)0 : \
+ __assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, #__expr))
+#endif
+
+_Noreturn void __assert(const char *_Nonnull __file, int __line,
+ const char *_Nonnull __func,
+ const char *_Nonnull __expr);
+
+#endif