跳转到内容

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

华夏公益教科书