附录二C语言标准库.ppt

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.1 标准语言概述 函数库简介 C语言标准库的历史 标准库函数优势 独立环境和宿主环境 2.1.1 函数库简介 标准c语言包括语言标准和一组标准库 支持字符和字符串、输入与输出、数学函数、期与时间转换、动态存储分配和其他特性 预处理器命令#include,引用这个库的头文件 例: 下列程序段中头文件math.h使程序能够访问余弦函数cos。 #include math.h double x,y; x = cos(y); 2.1.1 函数库简介 对定义为函数的库功能,标准C语言允许实现提供除真正函数以外的同名函数式宏 例: 2.1.2 C语言标准库的历史 C语言提供的标准函数库,函数库通过#include进行引用 在C89标准中: assert.h ctype.h errno.h float.h limits.h locale.h math.h setjmp.h signal.h stdarg.h stddef.h stdio.h stdlib.h string.h time.h 在95年的修正版中 iso646.h wchar.h wctype.h 在C99中增加了六个函数库 complex.h fenv.h inttypes.h stdbool.h stdint.h tgmath.h 2.1.3 标准库函数优势 准确性 高效性 可移植性 2.1.4 独立环境和宿主环境 “独立(free—standing)”系统 嵌入式系统可以不要任何类型的文件系统,也可以基本上不要操作系统 不要求它们提供除语言本身以外的任何东西 宿主(hosted)”环境 程序运行在RC机、大型机或者介于两者之间的计算机上 2.2 标准C语言函数 标准C语言函数 C++兼容性 2.2.1标准C语言函数 如何从标准c语言定义得到传统c语言库函数定义 消除任何使用标准c语言类型的函数,如long long与_Complex,或消除标准c语言中新增的函数(C89或C99). 删除限定符const、restrict与volatile 删除数组声明符括号内使用的static. 将类型void * 换成char * ,将size_t换成int。 2.2.1标准C语言函数 库函数注意事项 库名原则上是保留字。编程人员不能定义与标准库名称同名的外部对象。 库头文件或文件名可以内置在实现中,但仍然要被包括之后才能访问其名称 编程人员可以多次按任意顺序包括库头文件 2.2.2 C++兼容性 C++语言包括标准C语言运行库,但增加了几个C++特定库 不能从c语言程序中调用c++函数,但c++提供了从C++中调用c语言函数的方法 在C++中,声明c语言函数时有两个要求 函数声明要使用标准c语言原型,因为c++要求原型。 外部c语言要显式地标为具有c语言连接,即在c++的存储类extern后面加上字符串“C”。 2.2.2 C++兼容性 c语言函数中调用另一C语言函数 extern int f(void); c++中调用C语言函数 extern“C“int f(void); c++中要声明一组c语言函数,则可以对所有c语言函数采用连接规范: extern“C“{ double sqrt(double x); int f(void); …… } 2.2.2 C++兼容性 从C语言或c++调用头文件library.h 在头文件中包括extern “C”声明(条件预编译__cplusplus宏),表示这是个c++程序。 用正常c语言声明编写头文件,要求c++用户用#include命令包装连接声明 2.3 主要的库文件 stddef.h math.h ctype.h erron.h stdbool.h iso645.h assert.h 2.3.1 Stddef.h 2.3.1 Stddef.h 2.3.1 Stddef.h 2.3.2 math.h 双精度浮点数的精度进行操作 参数传递和错误处理 如果传递过来的参数不在其定义域内,函数会返回一些不确定的值,并将变量errno置为EDOM。 如果返回值太大,无法用一个double类型表示(造成上溢),这些函数会返回HUGEVAL,并将errno置为ERANGE。 如果函数结果太小,无法表示,则函数返回0,errno是否设置为ERANGE由实现确定 EDOM,ERANGE和HUGEVAL都在math.h中定义。 2.3.3 ctype.h 字符处理有两类函数:分类

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档