一:概述
errno.h是C标准库中的一个检查错误的头文件,以我个人的理解,它的内部一共定义了3个宏,分别是EDOM,ERANGE,errno.其中errno相当于一个全局变量,它可以被赋值,而C库中的每个模块都会包含这个errno.h头文件,那么errno这个可以被赋值的宏(不知道这样理解对不对,看了C标准库才做的理解),就相当于整个C标准库的全局变量,如果在使用某个模块的函数过程中发生了错误,这个errno宏就会在函数内部被赋予一个有含义的值,相当于一个错误代码,并且无论库的哪个模块或库函数都不会把errno设置为零。所以我们在使用这个模块的时候,只需要在一个库函数调用前将errno设置为零,然后在调用之后检查errno的值即可知道这个被调用的库函数有没有发生错误。
而另外两个宏则被赋予为固定的错误类型,就像平常的宏一样表示一种特定的错误。(以上纯属个人看过C标准库之后的个人理解)
二:模块接口和解释
序号 |
宏 |
解释 |
1 |
EDOM |
特定含义的错误,在math.h 中表示域错误 |
2 |
ERANGE |
特定含义的错误,在math.h 中表示溢出错误 |
3 |
errno |
库函数中用来盛放错误代码的宏 |
三:常用接口用法举例
这几个宏的用法已经在概述中说了,就是在使用库函数时候,在使用之前把errno置为零,然后在使用之后就去检测,其返回值,是不是被库函数赋予了错误代码,当然我们既然包含了errno.h这个头文件当然就可以定义自己的错误代码,也就是我们自己定义的函数内部也可以给errno赋值,然后在使用的时候去判断,前提是错误代码我们需要自己定义,每一个有固定的含义,这样就很方便了。