26 lines
564 B
C
26 lines
564 B
C
#pragma once
|
|
|
|
#include <zinnia/compiler.h>
|
|
#include <zinnia/panic.h>
|
|
|
|
#define assert(expr, msg, ...) \
|
|
({ \
|
|
if (__unlikely(!(expr))) { \
|
|
panic( \
|
|
"In function \"%s\" (%s:%u):\n" \
|
|
"Assertion \"%s\" failed!\n" msg, \
|
|
__FUNCTION__, \
|
|
__FILE__, \
|
|
__LINE__, \
|
|
#expr, \
|
|
##__VA_ARGS__ \
|
|
); \
|
|
} \
|
|
})
|
|
|
|
#ifndef NDEBUG
|
|
#define debug_assert(...) assert(__VA_ARGS__)
|
|
#else
|
|
#define debug_assert(...) ((void)0)
|
|
#endif
|