26#include <cx/platform/cpp.h>
27#include <cx/utils/macros/salieri.h>
51 _In_opt_z_
const char* file,
int ln);
64CX_C _no_inline
bool _cxAssertFail(_In_opt_z_
const char* expr, _In_opt_z_
const char* msg,
65 _In_z_
const char* file,
int ln);
67CX_C _no_inline
bool _cxAssertFail(_In_opt_z_
const char* expr, _In_opt_z_
const char* msg);
71#define dbgAssert(expr) (void)(!!(expr) || _cxAssertFail(#expr, NULL, __FILE__, __LINE__))
72#define dbgAssertMsg(expr, msg) (void)(!!(expr) || _cxAssertFail(#expr, msg, __FILE__, __LINE__))
73#define dbgVerify(expr) (!!(expr) || _cxAssertFail(#expr, NULL, __FILE__, __LINE__))
74#define dbgVerifyMsg(expr, msg) (!!(expr) || _cxAssertFail(#expr, msg, __FILE__, __LINE__))
83#define dbgAssert(expr) unused_noeval(expr)
91#define dbgAssertMsg(expr, msg) unused_noeval(expr)
100#define dbgVerify(expr) (!!(expr))
109#define dbgVerifyMsg(expr, msg) (!!(expr))
113#define devAssert(expr) (void)(!!(expr) || _cxAssertFail(#expr, NULL, __FILE__, __LINE__))
114#define devAssertMsg(expr, msg) (void)(!!(expr) || _cxAssertFail(#expr, msg, __FILE__, __LINE__))
115#define devVerify(expr) (!!(expr) || _cxAssertFail(#expr, NULL, __FILE__, __LINE__))
116#define devVerifyMsg(expr, msg) (!!(expr) || _cxAssertFail(#expr, msg, __FILE__, __LINE__))
117#define relAssert(expr) (void)(!!(expr) || _cxAssertFail(#expr, NULL, __FILE__, __LINE__))
118#define relAssertMsg(expr, msg) (void)(!!(expr) || _cxAssertFail(#expr, msg, __FILE__, __LINE__))
119#define devFatalError(msg) _cxAssertFail(NULL, msg, __FILE__, __LINE__)
120#define relFatalError(msg) _cxAssertFail(NULL, msg, __FILE__, __LINE__)
121#elif defined(DIAGNOSTIC)
122#define devAssert(expr) (void)(!!(expr) || _cxAssertFail(#expr, NULL))
123#define devAssertMsg(expr, msg) (void)(!!(expr) || _cxAssertFail(#expr, msg))
124#define devVerify(expr) (!!(expr) || _cxAssertFail(#expr, NULL))
125#define devVerifyMsg(expr, msg) (!!(expr) || _cxAssertFail(#expr, msg))
126#define relAssert(expr) (void)(!!(expr) || _cxAssertFail(#expr, NULL))
127#define relAssertMsg(expr, msg) (void)(!!(expr) || _cxAssertFail(#expr, msg))
128#define devFatalError(msg) _cxAssertFail(NULL, msg)
129#define relFatalError(msg) _cxAssertFail(NULL, msg)
138#define devAssert(expr) unused_noeval(expr)
146#define devAssertMsg(expr, msg) unused_noeval(expr)
154#define devVerify(expr) (!!(expr))
163#define devVerifyMsg(expr, msg) (!!(expr))
171#define relAssert(expr) (void)(!!(expr) || _cxAssertFail(#expr, NULL))
179#define relAssertMsg(expr, msg) (void)(!!(expr) || _cxAssertFail(#expr, msg))
187#define devFatalError(msg) ((void)0)
195#define relFatalError(msg) _cxAssertFail(NULL, msg)
198#if defined(DEBUG_LEGACY_ASSERT) && !defined(__INTELLISENSE__)
199#define assert(expr) relAssert(expr)
Compiler and platform detection macros.
ASSERT_ACTION_ENUM
Action to take when an assertion fails.
int(* dbgAssertCallback)(const char *expr, const char *msg, const char *file, int ln)
void dbgAssertRemoveCallback(dbgAssertCallback cb)
void dbgAssertAddCallback(dbgAssertCallback cb)
@ ASSERT_Crash
Intentionally crash to invoke crash handler or get memory dump.
@ ASSERT_Ignore
Ignore the failure and continue execution.
@ ASSERT_Exit
Immediately terminate the process with exit(1)
Macros for suppressing compiler warnings.