虽然系统自带的assert很好,但也有时可能希望使用自定义的assert宏.以下宏在debug模式下被调试时设置断点,运行时中止程序.
#ifndef XZ_ASSERT_H
#define XZ_ASSERT_H
#include <windows.h>
//使用XZ_ASSERT()需要正确定义_WIN32_WINNT 和 WINVER
#ifdef _DEBUG
#ifdef WIN32
#define XZ_ASSERT(expression) if (!(expression))/
{/
char buf[512];/
sprintf(buf,"Assert Failed:%s/nFile:%s/nLine:%d/n",#expression,__FILE__,__LINE__);/
if (IDOK == MessageBox(0,buf,"Assert Failed!",MB_OK))/
{/
if(IsDebuggerPresent())/
{/
/*DebugBreak();*//
__asm int 3/
}/
else/
{/
ExitProcess(1);/
}/
}/
}
#endif /* WIN32 */
#else /* _DEBUG */
#define XZ_ASSERT(expression)
#endif /* _DEBUG */
#endif//XZ_ASSERT_H