From be0a659153bce07207c07b6146c315107e035724 Mon Sep 17 00:00:00 2001 From: faketruth Date: Tue, 21 Feb 2012 16:42:24 +0000 Subject: Changed ASSERT() to not cause warnings during compile Added VERIFY(); it's the same as ASSERT() but also works in release builds VS2010 project uses warning level 4 git-svn-id: http://mc-server.googlecode.com/svn/trunk@305 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- VC2010/MCServer.vcxproj | 4 ++-- source/Globals.h | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/VC2010/MCServer.vcxproj b/VC2010/MCServer.vcxproj index f4fb93398..7cb818c45 100644 --- a/VC2010/MCServer.vcxproj +++ b/VC2010/MCServer.vcxproj @@ -106,7 +106,7 @@ EnableFastChecks MultiThreadedDebugDLL true - Level3 + Level4 EditAndContinue true Use @@ -137,7 +137,7 @@ EnableFastChecks MultiThreadedDebugDLL true - Level3 + Level4 EditAndContinue true Use diff --git a/source/Globals.h b/source/Globals.h index c2aa3753c..592580153 100644 --- a/source/Globals.h +++ b/source/Globals.h @@ -120,7 +120,15 @@ /// Faster than (int)floorf((float)x / (float)div) #define FAST_FLOOR_DIV( x, div ) ( (x) < 0 ? (((int)x / div) - 1) : ((int)x / div) ) -#define ASSERT( x ) { if( !(x) ) { LOGERROR("Assertion failed: \"%s\", file %s, line %i", #x, __FILE__, __LINE__ ); assert( !#x ); } } +// Own version of assert() that writes failed assertions to the log for review +#ifdef NDEBUG + #define ASSERT(x) ((void)0) +#else + #define ASSERT( x ) ( !!(x) || ( LOGERROR("Assertion failed: %s, file %s, line %i", #x, __FILE__, __LINE__ ), assert(0), 0 ) ) +#endif + +// Pretty much the same as ASSERT() but stays in Release builds +#define VERIFY( x ) ( !!(x) || ( LOGERROR("Verification failed: %s, file %s, line %i", #x, __FILE__, __LINE__ ), exit(1), 0 ) ) -- cgit v1.2.3