C运行时库函数
C运行时库函数是指C语言本身支持的一些基本函数,通常是汇编直接实现的。

  

API函数

API函数是操作系统为方便用户设计应用程序而提供的实现特定功能的函数,API函数也是C语言的函数实现的。



区别

他们之间区别是:API函数是针对操作系统的,C语言运行时函数则是针对C语言本身的。



=================================================================================================

·1、运行时库就是 C run-time library,是C而非C++语言世界的概念。

     取这个名字就是因为你的C程序运行时需要这些库中的函数。



·2、C语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等);

     所以,C语言内核开发出来之后,Dennis Ritchie和Brian Kernighan就用C本身重写了90%以上的UNIX系统

     函数,并且把其中最常用的部分独立出来,形成头文件和对应的LIBRARY,C run-time Library就是这样

     形成的。 



·3、随后,随着C语言的流行,各个C编译器的生产商/个体/团体都遵循老的传统,在不同平台上都有相对应

     的Standard Library,但大部分实现都是与各个平台有关的。由于各个C编译器对C的支持和理解有很多

     分歧和微妙的差别,所以就有了ANSI C;ANSI C(主观意图上)详细的规定了C语言各个要素的具体含义

     和编译器实现要求,引进了新的函数声明方式,同时订立了Standard Library的标准形式。所以C运行时

     库由编译器生产商提供。至于由其他厂商/个人/团体提供的头文件和库函数,应当称为第三方C运行库

    (Third party C runtime libraries)。



·4、C run-time library里面含有初始化代码,还有错误处理代码(例如divide by zero处理)。你写的程序

     可以没有math库,程序照样运行,只是不能处理复杂的数学运算,不过如果没有了C run-time库,main()

     就不会被调用,exit()也不能被响应。因为 C run-time Library 包含了C程序运行的最基本和最常用的

     函数。



·5、到了C++世界里,有另外一个概念:Standard C ++ Library,它包括了上面所说的C run-time Library

     和STL。包含C run-time Library的原因很明显,C++是C的超集,没有理由再重新来一个C++ run-time

     Library。VC针对C++加入的Standard C ++ Library主要包括:LIBCP.LIB、LIBCPMT.LIB和MSVCPRT.LIB。



·6、Windows环境下,VC提供的 C run-time Library又分为动态运行时库静态运行时库。  

=================================================================================================



动态运行时库

动态运行时库主要包括:

·DLL库文件:msvcrt.dll(或 MSVCRTD.DLL for debug build)

·对应的Import Library文件:MSVCRT.LIB(或 MSVCRTD.LIB for debug build)



静态运行时库

静态运行时库(release版)对应的主要文件包括:  

·LIBC.LIB(Single thread static library, retail version)  

·LIBCMT.LIB(Multithread static library, retail version)  

   

    msvcrt.dll提供几千个C函数,即使是像printf这么低级的函数都在msvcrt.dll里。其实你的程序运行时,很大一部分时间是在这些运行库里运行。在你的程序(release版)被编译时,VC会根据你的编译选项(单线程、多线程或DLL)自动将相应的运行时库文件(libc.lib、libcmt.lib或Import Library msvcrt.lib)链接进来。  



   编译时到底哪个C run-time library联入你的程序取决于编译选项:/MD,/ML, /MT,/LD (Use Run-Time Library)。你可以在VC中通过以下方法设置选择哪个C run-time library联入你的程序: To find these options in the development environment, click Settings on the Project menu. Then click the C/C++ tab, and
click Code Generation in the Category box. See the Use Run-Time Library drop-down box.



    从程序可移植性考虑,如果两函数都可完成一种功能,选运行时库函数好,因为各个C编译器的生产商对标准C Run-time Library提供了统一的支持。

=================================================================================================

最新文章

  1. [LeetCode] Max Sum of Rectangle No Larger Than K 最大矩阵和不超过K
  2. angularjs $broadcast $emit $on 事件触发controller间的值传递
  3. python画柱状图
  4. 动态加载jQuery
  5. [LeetCode]题解(python):120 Triangle
  6. com组件远程桌面rdp模块的调用
  7. 李洪强iOS开发之OC语言基础知识
  8. [Ecmall]ECMALL目录结构设置与数据库表
  9. Android常用控件之RatingBar的使用
  10. MVC实现省级联动
  11. sklearn数据预处理-scale
  12. 搞定:Enter passphrase for key提示
  13. Qt版权符号显示问题
  14. Best Coder #86 1001 Price List(大水题)
  15. SQL——按照季度,固定时间段,分组统计数据
  16. bzoj 4817: [Sdoi2017]树点涂色
  17. 在nagios中使用nrpe自定义脚本
  18. python函数后面有多个括号怎么理解?
  19. one-to-all及all-to-all网络通信模式
  20. 不看好运维竖井产品模式,优云打造融合化运维PaaS平台

热门文章

  1. Spring的IoC容器(转)BeanFactory
  2. 常见任务&基本工具 1 软件包管理
  3. 【扩展推荐】Laravel-ide-helper 高效的 IDE 智能提示插件 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 - Powered by PHPH
  4. java路径中'/'的使用
  5. 为什么不用原生的Spring Cloud Config
  6. hasLayout是什么
  7. SpringMVC代码复制版
  8. [J2EE规范]RMI简单实例 标签: j2ee实例 2017-06-29 18:05 217人阅读 评论(13)
  9. JS判断PC 手机端显示不同的内容
  10. 遗传算法MATLAB实现(3):多元函数优化举例