rendered paste body.h
#include <windows.h>
#include <stdio.h>
#include <string.h>
#define MY_APP_ERROR_HDR ("Found a Error!")
#define NEED_IGNORE (1)
#define NEED_DEBUG (2)
char __stdcall _FASSERT(void* expr, void *filename, unsigned int linenum,const char* FunctionName);
//#define FASSERT(expression) _FASSERT((void*)(expression),__FILE__,__LINE__)
//#pragma warning(disable:4312)
#define FASSERT(expr) {if (NEED_DEBUG==_FASSERT(reinterpret_cast<void*>(expr || expr),__FILE__,__LINE__,TEXT( #expr))){__asm INT 3};};
//#pragma warning(default:4312)
.cpp
#pragma warning(disable:4996)
char __stdcall _FASSERT(void* expr, void *filename, unsigned int linenum,const char* FunctionName)
{
if (!expr)
{
ShowCursor(true);
char buf[400] = "";
sprintf(buf,"Не выполняется утверждение в программе!\nУтверждение:%s\nФайл:\"%s\"\nСтрока №%u\n\tПрервать - выход\n\tПовторить - перейти в Debug\n\tОтменить - игнорировать",FunctionName,filename,linenum);
int ret = MessageBox(0,buf,MY_APP_ERROR_HDR,MB_ABORTRETRYIGNORE | MB_ICONWARNING | MB_DEFBUTTON2);
switch(ret)
{
case IDABORT :ExitProcess(0) ;break;
case IDRETRY :return NEED_DEBUG ;break; // DEBUG останов
case IDIGNORE :ShowCursor(false); return NEED_IGNORE ; break; // Игнор
}
}
return 0;
}