第一章 错误处理

来源:互联网 发布:福建师大网络教育专业 编辑:程序博客网 时间:2024/06/01 10:00

使用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
原创粉丝点击