C语言中头文件errno.h是什么含义?包含些什么内容?

C语言中头文件errno.h是什么含义?包含些什么内容?,第1张

errno.h 是C语言C标准函式库里的标头档,定义了通过错误码来回报错误信息的宏。

errno本身是一个整型的全局变量,当使用errno的库函数,在执行出错时,只通过函数返回值哪逗辩返回一个表示出错的标识,如-1或NULL等,具体的出错原因会被赋值到errno中。通过查询errno可以确定具体的出错原因。

在errno.h中定义了一系列常指基见的宏,其形式为

#define EPERM 1 /* Operation not permitted */

可以划分为

1 定义一个宏名,以李缺E开头;

2 定义其值,为一个正整数;

3 一个注释区域,说明该错误号出现时的具体错误内容。

errno.h中的条目因不同编译器的实现而有所区别,一般在100~128条范围内,具体内容可以在编译器的系统标准头文件夹下查看对应文件。

C语言标准库中包含了各种用于处理错误的函数和宏。

1、assert( ) 宏

#include<assert.h>

void assert( int expression )

可用于诊断程序bug。expression可以是任何要检测的东西:变量或任何表达式。如果expression为TRUE,则assert()不执行任何 *** 作;否则在stderr上显示一条错误消息,并终止程序的执行。例:assert( x >= 0)为使assert( )宏发挥作用,编程程序必须采用调试模式。以后以发行模式编译程序的最后版本时,assert()将被禁用。

assert( )采取的动作取决于另一个名为NDEBUG宏(表示“不调试”)。如果NDEBUG宏未被定义(默认情况),则assert( )将处于活动状态;否则assert( )将被关闭,因此不起作用。定义NDEBUG宏的代码如下: #define NDEBUG

2、头文件errno.h

头文件errno.h定义了几个宏,用于定义和记录运行错误。这些宏将结合函数perror( )一起使念烂用。头文件errno.h定义了一个名为errno的外部int变量。如果执行时发生错误,C语言函数库中的很多函数都将一个值赋给该变量。

头文件errno.h定义的符号错误常量

名称 值 消息和含义

E2BIG 1000 参数列表过长(超过128字节)

EACCES 5 没有权限(如,试图写一个为只读的文件)

EBADF 6 文件描述符无效

EDOM 1002 数学参数超出范围(将一个不允许的值作为参数传递给数学函数)

EEXIST 80 文件已经羡高槐存在

EMFILE 4 打开过多的文件

ENOENT 2 没有这样的文件或目录

ENOEXEC 1001 执行格式错误

ENOMEM 8 内存不够(如没有足够内存执行exec()函数)

ENOPATH 3 路径未找到

ERANGE 1003 结果超出范围(如数学函数值过大)

可以以两种方式来使用errno。有些函数通过其返回值来指出发生了错误。在这种情况下,可以通过检测errno的值来确定错误的性质,并采取相应的措施。如果无法知道是否发生了错误,可以检测errno。如果它不为0,则说明发生了错误,而errno的值指出了错误的性质。兄友处理完错误后,一定要将errno的值重置为0。

3、perror( )函数

#include<stdio.h>

void perror( const char *msg )

perror( )函数是C语言中另一个错误处理工具,该函数在stderr上显示一条消息,指出库函数调用或系统调用期间,最后发生的一个错误。函数首先打印msg指向的一条可选的、用户定义的消息,然后是冒号以及实现定义的、描述最后发生的错误消息;如果没有错误,则显示no error。函数不会根据错误来采取某种措施。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12289045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存