error
在头文件<errno.h>中定义 | | |
---|---|---|
#define errno / *实现定义的* / | | |
errno
是一个预处理器宏,可扩展为线程本地(自C11)可修改类型的左值int
。几个标准库函数通过写入正整数来指示错误errno
。通常,值的errno
设置为<errno.h>
以字母E
开头的后缀为大写字母或数字的宏常量中列出的错误代码之一。
值errno
是0
在程序启动时,尽管库函数可以写为正整数errno
是否发生了错误,库函数永远保存0
在errno
。
库函数perror
,strerror
可用于获取与当前errno
值对应的错误条件的文本描述。
示例
#include <stdio.h>
#include <math.h>
#include <errno.h>
void show_errno(void)
{
if(errno==EDOM) printf("domain error");
if(errno==EILSEQ) printf("illegal sequence");
if(errno==ERANGE) printf("pole or range error");
if(errno==0) printf("no error");
printf(" occurred\n");
}
int main(void)
{
printf("MATH_ERRNO is %s\n", math_errhandling & MATH_ERRNO ? "set" : "not set");
errno = 0;
1.0/0.0;
show_errno();
errno = 0;
acos(+1.1);
show_errno();
errno = 0;
log(0.0);
show_errno();
errno = 0;
sin(0.0);
show_errno();
}
输出:
MATH_ERRNO is set
pole or range error occurred
domain error occurred
pole or range error occurred
no error occurred
参考
- C11标准(ISO/IEC 9899:2011):
- 7.5错误<errno.h>(p:205)
- K.3.1.3使用errno(p:584)
- K.3.2错误<errno.h>(p:585)
- C99标准(ISO/IEC 9899:1999):
- 7.5错误<errno.h>(p:186)
- C89 / C90标准(ISO/IEC 9899:1990):
- 4.1.3错误<errno.h>
另请参阅
E2BIG,EACCES,...,EXDEV | 用于标准POSIX兼容错误条件的宏(宏常量) |
---|---|
PERROR | 显示当前错误对应的字符串到stderr(函数) |
strerrorstrerror_sstrerrorlen_s(C11)(C11) | 返回给定错误代码(函数)的文本版本 |
math_errhandlingMATH_ERRNOMATH_ERREXCEPT(C99)(C99)(C99) | 定义了常用数学函数(宏常量)使用的错误处理机制, |
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com