跳转到内容

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,用于文件无法打开进行读取的情况。

华夏公益教科书