utils: improve CHECK() macro

Include the original expression in the assertion failure message.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
Yuxuan Shui 2019-03-30 22:58:08 +00:00
parent 0733f7540f
commit 2040190fb6
No known key found for this signature in database
GPG Key ID: 37C999F617EA1A47
1 changed files with 4 additions and 3 deletions

View File

@ -41,12 +41,13 @@ safe_isnan(double a) {
assert(false); \
abort(); \
} while (0)
#define CHECK_EXPR(...) ((void)0)
/// Same as assert, but evaluates the expression even in release builds
#define CHECK(expr) \
do { \
__auto_type __tmp = (expr); \
assert(__tmp); \
(void)__tmp; \
__auto_type _ = (expr); \
assert((CHECK_EXPR(expr), _)); \
(void)_; \
} while (0)
// Some macros for checked cast