?? mf_error.c
字號:
/* MF_Error.c */#include <stdarg.h>#include "MF_Error.h"/*============================================================================* * Global error handler structure and pointer *============================================================================*/ MF_ErrHandlerClass mf_errHandler; MF_Bool mf_errHandlerSet = MF_FALSE;/*----------------------------------------------------------------------------*/#undef __FUNC__#define __FUNC__ "MF_ErrHandlerSetType"void MF_ErrHandlerSetType(MF_ErrHandlerType type) { mf_errHandlerSet = MF_TRUE; switch(type){ case(MF_ERR_RETURN): mf_errHandler.type=MF_ERR_RETURN; mf_errHandler.p=(void(*)(void *))(&MF_ErrReturn); break; case(MF_ERR_EXIT): mf_errHandler.type=MF_ERR_EXIT; mf_errHandler.p=(void(*)(void *))(&MF_ErrExit); break; default: mf_errHandler.type=MF_ERR_EXIT; mf_errHandler.p=(void(*)(void *))(&MF_ErrExit); }}/*----------------------------------------------------------------------------*/#undef __FUNC__#define __FUNC__ "MF_Err"int MF_Err(int line, char *func, char *file, char *dir, int rc, int p, char *msg, ...) { va_list argp; char buf[2048], *lbuf=MF_NULL; if(*msg) { va_start(argp, msg); vsprintf(buf, msg, argp); va_end(argp); lbuf = buf; } /* If an error handler function has been specified, use it. Otherwise, use exit on error as the default. */ if(mf_errHandlerSet) { (*((void(*)(int,char *,char *,char *,int,int,char *))(mf_errHandler.p))) (line,func,file,dir,rc,p,lbuf); } else{ MF_ErrExit(line,func,file,dir,rc,p,lbuf); } return(rc);}/*----------------------------------------------------------------------------*/#undef __FUNC__#define __FUNC__ "MF_ErrExit"void MF_ErrExit(int line, char *func, char *file, char *dir, int rc, int p, char *lbuf) { char rs[256]; char *rsbuf = rs; if(!lbuf) lbuf = " "; printf("MF ERROR: %s() line %d in %s%s\n",func,line,dir,file); MF_GetErrString(rc, &rsbuf); printf("MF ERROR: %s, %s", rsbuf, lbuf); exit(rc);}/*----------------------------------------------------------------------------*/#undef __FUNC__#define __FUNC__ "MF_ErrReturn"void MF_ErrReturn(int line, char *func, char *file, char *dir, int rc, int p, char *lbuf) { return;}/*----------------------------------------------------------------------------*/#undef __FUNC__#define __FUNC__ "MF_GetErrString"void MF_GetErrString(int rc, char **rs) { switch(rc){ case(MF_ERR_DATE): strcpy(*rs, "Invalid date generated"); break; case(MF_ERR_ARG_OUTOFRANGE): strcpy(*rs, "Argument out of range"); break; default: strcpy(*rs, "Does not match any known error codes"); break; }}/*----------------------------------------------------------------------------*/#undef __FUNC__#define __FUNC__ "MF_ErrPrint"void MF_ErrPrint(int rc) { char rs[256]; char *rsbuf = rs; MF_GetErrString(rc, &rsbuf); printf("MF ERROR: %s\n", rsbuf); return;}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -