GetLastError 增强封装(显示更具体信息)

本文介绍了一种改进后的GetLastError宏定义方法,通过该方法能够详细地展示错误发生的具体位置,包括文件名、行号、函数名以及错误信息等,并支持自定义附加信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单纯使用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);

使用这个宏方法可以更具体显示出 
错误发生在哪一个文件、
第几行代码、
调用的函数是哪一个、
错误编码,以及错误的解释信息。

还可以另外附加 一个自己想附加的信息

 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值