单纯使用GetLastError()只显示错误编号~很多时候都不知道具体意思,写了一个增强效果的封装
#define filename(x) strrchr(x,'\\')?strrchr(x,'\\')+1:x
#define GetLastErrorEx(lpszFunction){LPVOID lpMsgBuf;DWORD dw = GetLastError();FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER |FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_IGNORE_INSERTS,NULL,dw,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),(LPSTR)&lpMsgBuf,0, NULL);\
if (lpszFunction)\
printf("%s(Line:%d)->Funtion:%s\ndiyInfo:%s\nError(%d)->Info:%s\n",\
filename(__FILE__), __LINE__, __FUNCTION__, lpszFunction, dw, lpMsgBuf);\
else \
printf("%s(Line:%d)->Funtion:%s\nError(%d)->Info:%s\n",\
filename(__FILE__), __LINE__, __FUNCTION__, dw, lpMsgBuf);\
LocalFree(lpMsgBuf);\
}
//调用例子
GetLastErrorEx("自定义附加信息");
GetLastErrorEx(0);
使用这个宏方法可以更具体显示出
错误发生在哪一个文件、
第几行代码、
调用的函数是哪一个、
错误编码,以及错误的解释信息。
还可以另外附加 一个自己想附加的信息
错误发生在哪一个文件、
第几行代码、
调用的函数是哪一个、
错误编码,以及错误的解释信息。
还可以另外附加 一个自己想附加的信息