C语言标准库 errno.h

errno.h

errno 变量

errno.h声明了一个 int 类型的 errno 变量,用来存储错误码(正整数)。

如果这个变量有非零值,表示已经执行的程序发生了错误。

int x = -1;

errno = 0;

int y = sqrt(x);

if (errno != 0) {
  fprintf(stderr, "sqrt error; program terminated.\n");
  exit(EXIT_FAILURE);
}

上面示例中,计算一个负值的平方根是不允许的,会导致errno不等于0

如果要检查某个函数是否发生错误,必须在即将调用该函数之前,将errno的值置为0,防止其他函数改变errno的值。

变量errno的值通常是两个宏EDOMERANGE。这两个宏都定义在errno.h。它们表示调用数学函数时,可能发生的两种错误。

  • 定义域错误(EDOM):传递给函数的一个参数超出了函数的定义域。例如,负数传入sqrt()作为参数。
  • 取值范围错误(ERANGE):函数的返回值太大,无法用返回类型表示。例如,1000 传入exp()作为参数,因为 e^1000 太大,无法使用 double 类型表示。

使用数学函数时,可以将errno的值与 EDOM 和 ERANGE 比较,用来确定到底发生了哪一类错误。

赞(0)
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
文章名称:C语言标准库 errno.h
文章链接:https://www.yihuo.tech/notes/server-stack/c/c-errno-h/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
广告位,电脑和手机可分别设置,可放任何广告代码

一个专注于技术系列文章的技术分享网站