C 编程/errno.h
外观
< C 编程
(重定向自 C 编程/C 参考/errno.h)errno.h
定义了宏,通过存储在名为 errno
的静态位置的错误代码来报告错误条件。
当某些库函数检测到错误时,会在 errno
中存储一个值。程序启动时,存储的值为零。库函数只存储大于零的值。任何库函数都可以改变存储的值,无论它们是否检测到错误。大多数函数通过返回一个特殊值来指示它们检测到错误,对于返回指针的函数通常为 NULL,对于返回整数的函数通常为 -1。一些函数要求调用者将 errno
预设为零,然后在之后测试它,以查看是否检测到错误。
errno
宏扩展为一个类型为 int
的左值,包含在任何使用 errno 机制的函数中生成的最后一个错误代码。最初这是一个静态内存位置,但宏今天几乎总是用于允许多线程,每个线程将看到它自己的错误号。
头文件还定义了宏,它们扩展为表示错误代码的整数常量。C 标准只要求定义三个
EDOM
- 结果来自函数域之外的参数,例如
sqrt(-1)
ERANGE
- 结果来自函数范围之外的结果,例如
strtol("0xfffffffff",NULL,0)
EILSEQ
- 结果来自非法字节序列,例如
mbstowcs(buf,"\xff", 1)
(如果多字节编码为 UTF-8)。
符合 POSIX 的操作系统(如 UNIX 或 Linux)包含许多其他错误值,其中许多比上述错误值使用得更多,例如 EACCES,用于文件无法打开进行读取的情况。