All pastes #2075058 Raw Edit

Stuff

public text v1 · immutable
#2075058 ·published 2011-06-05 13:17 UTC
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;
}