C语言中的errno(错误报告)用法

来源:本站
导读:目前正在解读《C语言中的errno(错误报告)用法》的相关信息,《C语言中的errno(错误报告)用法》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《C语言中的errno(错误报告)用法》的详细说明。
简介: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 <stdio.h>

#include <errno.h>

#include <string.h>

#include <math.h>

int main(void)

{

errno = 0;

int s = sqrt(-1);

if (errno) {

printf("errno = %dn", errno); // errno = 33

perror("sqrt failed"); // sqrt failed: Numerical argument out of domain

printf("error: %sn", strerror(errno)); // error: Numerical argument out of domain

}

return 0;

}

提醒:《C语言中的errno(错误报告)用法》最后刷新时间 2024-03-14 00:59:13,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《C语言中的errno(错误报告)用法》该内容的真实性请自行鉴别。