越来越感觉到c语言的短小精悍。
有一次要调试一个代码,直接从ftp上下载下来,打开vs就开始调试。无论怎么调试就是不对,单步运行定位错误到一个打开文件的函数。原来是文件没有打开。但是没有具体的错误信息,调试一下子陷入了僵局。记得以前用MFC的时候里面有个函数叫做GetLastError(),可以获取最后出错的原因,如果c语言有就好了。上网搜索了一下果然有这个东西,就叫做errno。errno是定义"error.h"里的错误码,“error.h”定义了一系列的宏来表示相应的错误信息,通过检查errono再在“erro.h”里面查找就能找到相应的出错信息。
from wikipedia:
errno.h 是C语言C标准库里的头文件,定义了通过错误码来回报错误信息的宏:
errno宏定义为一个int型态的左值, 包含任何函数使用errno功能所产生的上一个错误码。
一些表示错误码,定义为整数值的宏:
EDOM 源自于函数的参数超出范围,例如sqrt(-1)
ERANGE 源自于函数的结果超出范围,例如strtol(“0xfffffffff”,NULL,0)
EILSEQ 源自于不合法的字符顺序,例如wcstombs(str, L"\xffff", 2)
但是一个一个手工查找毕竟麻烦,还好标准库为我们提供了一些函数。
复制代码
1 void perror( const char string );//Print an error message.<stdio.h> or <stdlib.h>
2 //msdn 示例代码
3 / PERROR.C: This program attempts to open a file named
4 * NOSUCHF.ILE. Because this file probably