第一章 错误处理

使用GetLastError()得到上一个函数设置的32位错误代码。

要自己定义错误代码使用SetLastError()函数,得到错误代码后最简单的方法使用Error LookUp软件看看代码的具体含义,当然,也可以使用FormatMessage函数转化成字符串描述。然而,FormatMessage函数并不能完全看懂,先放着吧。

看看后面的,在回顾一下前面的。


来看看FormatMessage这个函数。

FormatMessageA(
    DWORD dwFlags,//标识位,FORMAT_MESSAGE_ALLOCATE_BUFFER时分配足够容纳错误文本描述的内存。FORMAT_MESSAGE_FROM_SYSTEM希望获得系统定义代码
    LPCVOID lpSource,//第一个参数为FORMAT_MESSAGE_FROM_HMODULE时,lpSource会去搜索模块进程...很好,看不懂对吧,先填上NULL吧
    DWORD dwMessageId,//通俗一点讲就是错误代码
    DWORD dwLanguageId,//语言标识符,使用MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)表示操作系统默认语言
    LPSTR lpBuffer,//错误描述
    DWORD nSize,//错误描述缓冲区大小
    va_list *Arguments//保存格式化信息中的插入值的一个数组。依然不懂,填个NULL吧
    );

书上的例子太复杂了,要不要一来就这样?来个简单的

#include <stdio.h>
#include <windows.h>

int main()
{
	if (!CreateDirectory("C:\\", 0))
	{
		LPVOID pMsgBuf;
		//dw为错误代码
		DWORD dw = GetLastError();
		FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
			NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&pMsgBuf, 0, NULL);
		printf("出错码:%d, 出错信息:%s \n", dw, pMsgBuf);
	}

	return 0;
}


函数么,就应该简单的入门,书上写的可是会打击积极性的哦~

如果书后面有这函数的继续使用且参数不为NULL的话,回头把这几个不懂的参数补上。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值