C 标准库
来源:互联网 发布:mysql安装版的配置 编辑:程序博客网 时间:2024/06/03 21:33
简介
C 标准库的 errno.h
头文件定义了整数变量 errno
,它是通过系统调用设置的,在错误事件中的某些库函数表明了什么发生了错误。该宏扩展为类型为 int 的可更改的左值,因此它可以被一个程序读取和修改。
在程序启动时,errno
设置为零,C 标准库中的特定函数修改它的值为一些非零值以表示某些类型的错误。您也可以在适当的时候修改它的值或重置为零。 errno.h
头文件也顶了以一系列表示不同错误代码的宏,这些宏应扩展为类型为 int
的整数常量表达式。
库宏
下面列出了头文件 errno.h 中定义的宏:
这是通过系统调用设置的宏,在错误事件中的某些库函数表明了什么发生了错误。 2 EDOM Domain Error
这个宏表示一个域错误,它在输入参数超出数学函数定义的域时发生,errno 被设置为 EDOM。 3 ERANGE Range Error
这个宏表示一个范围错误,它在输入参数超出数学函数定义的范围时发生,errno 被设置为 ERANGE。
C 库宏 - errno
描述
C 库宏 extern int errno
是通过系统调用设置的,在错误事件中的某些库函数表明了什么发生了错误。
声明
下面是 errno 宏的声明。
extern int errno
参数
- NA
返回值
- NA
实例
下面的实例演示了 errno 宏的用法。
#include <stdio.h>#include <errno.h>#include <string.h>extern int errno ;int main (){ FILE *fp; fp = fopen("file.txt", "r"); if( fp == NULL ) { fprintf(stderr, "Value of errno: %d\n", errno); fprintf(stderr, "Error opening file: %s\n", strerror(errno)); } else { fclose(fp); } return(0);}
让我们编译并运行上面的程序,当文件 file.txt 不存在时,将产生以下结果:
Value of errno: 2Error opening file: No such file or directory
C 库宏 - EDOM
描述
C 库宏 EDOM
表示一个域错误,它在输入参数超出数学函数定义的域时发生,errno 被设置为 EDOM。
声明
下面是 EDOM 宏的声明。
#define EDOM some_value
参数
- NA
返回值
- NA
实例
下面的实例演示了 EDOM 宏的用法。
#include <stdio.h>#include <errno.h>#include <math.h>int main(){ double val; errno = 0; val = sqrt(-10); if(errno == EDOM) { printf("Invalid value \n"); } else { printf("Valid value\n"); } errno = 0; val = sqrt(10); if(errno == EDOM) { printf("Invalid value\n"); } else { printf("Valid value\n"); } return(0);}
让我们编译并运行上面的程序,这将产生以下结果:
Invalid valueValid value
C 库宏 - ERANGE
描述
C 库宏 ERANGE
表示一个范围错误,它在输入参数超出数学函数定义的范围时发生,errno 被设置为 ERANGE。
声明
下面是 ERANGE 宏的声明。
#define ERANGE some_value
参数
- NA
返回值
- NA
实例
下面的实例演示了 ERANGE 宏的用法。
#include <stdio.h>#include <errno.h>#include <math.h>int main(){ double x; double value; x = 2.000000; value = log(x); if( errno == ERANGE ) { printf("Log(%f) is out of range\n", x); } else { printf("Log(%f) = %f\n", x, value); } x = 1.000000; value = log(x); if( errno == ERANGE ) { printf("Log(%f) is out of range\n", x); } else { printf("Log(%f) = %f\n", x, value); } x = 0.000000; value = log(x); if( errno == ERANGE ) { printf("Log(%f) is out of range\n", x); } else { printf("Log(%f) = %f\n", x, value); } return 0;}
让我们编译并运行上面的程序,这将产生以下结果:
Log(2.000000) = 0.693147Log(1.000000) = 0.000000Log(0.000000) = -inf
阅读全文
0 0
- C标准库“圣经”:C标准库
- 标准c++ 库
- C标准库[转]
- C标准库
- (不错)C标准库
- C标准库
- C语言标准库
- C标准库“圣经”
- 解读《C标准库》
- C标准库
- c 标准库
- c标准库
- c标准库
- C标准库断言
- C标准库
- C 标准库
- C标准库
- C标准库
- 解决python import sklearn 出现 ImportError: DLL load failed: 找不到指定的模块
- cross tool chain 工具链的组成
- 贝叶斯网络和马尔科夫网络
- Android中的播放音频的API和SurfaceView控件
- 用bat脚本获取win电脑的数字时间
- C 标准库
- storm-组件
- Android Architecture Component之Lifecycle-Aware Components
- python中django模块的使用
- 20171124 数据基础
- python爬取极客头条
- spring cloud,用feign客户端调用服务hystrix不能生效的问题
- Shader—消融效果
- D3.js 中 Box Plots详解