C 编程/errno.h
外观
< C 编程
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。