C语言中的errno(错误报告)用法
程序员文章站
2022-08-09 18:23:17
c语言标准库中的错误报告用法有三种形式。
1、errno
errno在头文件中定义,如下
#ifndef errno
extern int errno;
#endif
&nbs...
c语言标准库中的错误报告用法有三种形式。
1、errno
errno在
#ifndef errno extern int errno; #endif
外部变量errno保存库程序中实现定义的错误码,通常被定义为errno.h中以e开头的宏,
所有错误码都是正整数,如下例子
# define edom 33 /* math argument out of domain of function. */
edom的意思是参数不在数学函数能接受的域中,稍后的例子中用到了这个宏。
errno的常见用法是在调用库函数之前先清零,随后再进行检查。
2、strerror
strerror在
__begin_namespace_std /* return a string describing the meaning of the `errno' code in errnum. */ extern char *strerror (int __errnum) __throw; __end_namespace_std
函数strerror返回一个错误消息字符串的指针,其内容是由实现定义的,字符串不能修改,但可以在后续调用strerror函数是覆盖。
3、perror
perror在
__begin_namespace_std /* print a message describing the meaning of the value of errno. this function is a possible cancellation point and therefore not marked with __throw. */ extern void perror (const char *__s); __end_namespace_std
函数perror在标准错误输出流中打印下面的序列:参数字符串s、冒号、空格、包含errno中当前错误码的错误短消息和换行符。在标准c语言中,如果s是null指针或null字符的指针,则只打印错误短消息,而不打印前面的参数字符串s、冒号及空格。
下面是几个简单的例子
#include #include #include #include int main(void) { errno = 0; int s = sqrt(-1); if (errno) { printf("errno = %d\n", errno); // errno = 33 perror("sqrt failed"); // sqrt failed: numerical argument out of domain printf("error: %s\n", strerror(errno)); // error: numerical argument out of domain } return 0; }
上一篇: numpy和pandas的基础用法
下一篇: C语言之函数调用01—1到n的阶乘和