MTVERIFY.h

#include "stdafx.h"
#include <crtdbg.h>

#pragma comment( lib, "USER32" )

#ifdef DEBUG
 #define MTASSERT(a) _ASSERTE(a)
 #define MTVERIFY(a) if (!(a)) PrintError(#a,__FILE__,__LINE__,GetLastError())
#else
 #define MTASSERT(a) (a)
 #define MTVERIFY(a) (a)
#endif

__inline void PrintError(LPTSTR linedesc, LPTSTR filename, int lineno, DWORD errnum)
{
 LPTSTR lpBuffer;
 TCHAR errbuf[256];

 #ifdef _WINDOWS_
  TCHAR modulename[MAX_PATH];
 #else
  DWORD numread;
 #endif

 FormatMessage(
  FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
  NULL,
  errnum,
  LANG_NEUTRAL,
  (LPTSTR)&lpBuffer,
  0,
  NULL
 );
 
 wsprintf(errbuf, "/nThe following call failed at line %d in %s:/n/n %s/n/nReason: %s/n", lineno, filename, linedesc, lpBuffer);

 #ifndef _WINDOWS_
  WriteFile(GetStdHandle(STD_ERROR_HANDLE), errbuf, strlen(errbuf), &numread, FALSE );
  Sleep(3000);
 #else
  GetModuleFileName(NULL, modulename, MAX_PATH);
  MessageBox(NULL, errbuf, modulename, MB_ICONWARNING|MB_OK|MB_TASKMODAL|MB_SETFOREGROUND);
 #endif

 LocalFree(lpBuffer);
 exit(EXIT_FAILURE);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值