For example:
Case 1:
Code: Select all
if (A)
statement_1;
else
AGL_ASSERT(B);
statement_2;
Code: Select all
If (C)
AGL_ASSERT(D);
Else
statement_3;
Code: Select all
#ifdef _DEBUG_GLIB_TRACE
#define AGL_ASSERT(x) if (!(x)) AGL_CrtDbgBreak();
#else
#define AGL_ASSERT(x)
In case 1, if _DEBUG_GLIB_TRACE is not defined (in release mode), the statement_2 after the AGL_ASSERT gets executed when A is false.
In case 2, if _DEBUG_GLIB_TRACE IS defined, statement_3 is executed if C is true AND D is true:
Code: Select all
If (C)
if (!(D))
AGL_CrtDbgBreak();
else
statement_3;
I would use the following definition for AGL_ASSERT
Code: Select all
#ifdef _DEBUG_GLIB_TRACE
#define AGL_ASSERT(x) { if (!(x)) AGL_CrtDbgBreak(); }
#else
#define AGL_ASSERT(x) do {;} while(0)