C Run-time library

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

以下摘自《edyang 语录》:

记住一个人,最重要的是记住他/她/它是男人/女人/东东,有没有贬过,有没有吻过,有没有咬过,名字记不住反而关紧要。

C Run-time Library

    C Run-time library,是 C 而非 C++ 语言世界的概念,取这个名字就是因为你的 C 程序运行时需要这些库中的函数.

    大家在学过C++之后,可能对C Runtime Library这个名字有一定的误会,可能认为是运行时库是动态链接的,其实不然,想想C语言其实没有C++的多态性,不可能做到动态绑定的,所以应该只 是一个库的名字而已。在你写 C 代码的时候,用的函数都是从 C run-time library 的头文件来的,编译连接时还是要连接 C run-time library 里的库函数,运行时用的二进制代码也只不过 C run-time library 里的库函数的 copy 罢了。可能因为现在动态连接库太普遍了,所以对Runtime比较敏感。

    C语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键之,程序流程控制,数据类型等);所以,C 语言内核开发出来之后,Dennis Ritchie 和 Brian Kernighan 就用 C 本身重写了 90% 以上的 UNIX 系统函数,并且把其中最常用的部分独立出来,形成头文件和对应的 LIBRARY,C run-time library 就是这样形成的。可能那时还没有这个叫法,Ritchie 和 Kernighan 合著的《The C Programmin Language》第二版中叫做“Standard Library”,不太清楚什么时候开始有人发明 C run-time library 的叫法。

    在英语里,C run-time library 是一种很自然而然的叫法。随后,随着 C 语言的流行,各个 C 编译器的生产商/个体/团体都遵循老的传统,在不同平台上都有相对应的 Standard Library,但大部分实现都是于各个平台有关的。由于各个 C 编译器对 C 的支持和理解有很多分歧和微妙的差别,所以就有了 ANSI C;ANSI C (主观意图上)详细的规定了 C 语言各个要素的具体含义和编译器实现要求,引进了新的函数声明方式,同时订立了 Standard Library 的标准形式。至于由其他厂商/个人/团体提供的头文件和库函数,应当称为第三方 C 运行库(Third party C run-time libraries)。
    C run-time library里面含有初始化代码,还有错误处理代码(例如divide by zero处理)。你写的程序可以没有math库,程序照样运行,只是不能处理复杂的数学运算,不过如果没有了C run-time库,main()就不会被调用,exit()也不能被响应。因为C run-time library包含了C程序运行的最基本和最常用的函数。
    到了 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
    Windows环境下,VC提供的 C run-time library又分为动态运行时库和静态运行时库。
动态运行时库主要是DLL库文件msvcrt.dll(or 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提供了统一的支持.

引用:http://www.diybl.com/course/3_program/c/c_js/20091112/182209.html

       http://www.cnscn.org/htm_data/157/0712/13733.html

如何理解C run-time library (C运行时库) 注: 以下内容部分引自CSND中相关讨论的帖子,并结合自己的理解整理而成。仅供参考。1)运行时库就是 C run-time library,是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些库中的函数.2)C 语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等);所以,C 语言内核开发出来之后,Dennis Ritch 阅读详情

相关推荐

如何理解C run-time library (C运行时库)

 1)运行时库就是   C   run-time   library,是   C   而非   C++   语言世界的概念:取这个名字就是因为你的   C   程序运行时需要这些库中的函数.         2)C   语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等);所以,C   语言内核开发出来之后,Dennis   Ritchie   和   Bri

dennishan的专栏 623

C Run-Time Library的理解

注: 以下内容部分引自CSND中相关讨论的帖子,仅供参考, 共同学习哈  ***************************************  1)运行时库就是   C   run-time   library,是   C   而非   C++   语言世界的概念:取这个名字就是因为你的   C   程序运行时需要这些库中的函数.  2)C   语言是所谓的“小内核”语言,就其语

肖氏专栏 898

C run-time library

1)运行时库(C run-time library),是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些库中的函数.2)C 语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等);所以,C 语言内核开发出来之后,Dennis Ritchie 和 Brian Kernighan 就用 C 本身重写了 90% 以上的 UNIX 系统...

weixin_30725467的博客 114

如何理解C run-time library

如何理解C run-time library (C运行时库) 注: 以下内容部分引自CSND中相关讨论的帖子,并结合自己的理解整理而成。仅供参考。1)运行时库就是 C run-time library,是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些库中的函数.2)C 语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,

visame的专栏 998

C Run-Time Library

C运行时库(CRT)是一组包含启动例程、初始化代码、标准库支持代码,有时还包括系统调用封装函数的集合,它们共同构成了 C 程序的执行环境。这些代码大多并不存在于应用程序自身的源代码中,而是由编译器驱动程序(例如 gcc 或 clang)自动链接到程序中。

qq_46523233的博客 1019

文件操作系列之一——(C Run-Time Library

现在要做一个东西出来,因为涉及的知识面比较广,所以需要系统的把知识整理一下,刚好用到文件操作这一块,就整理了一下相关的要点。 操作文件的方式很多,这里重点介绍几个,本次介绍C Run-Time Library的文件操作方式。 C Run-Time Library中操作文件的方式又有两种,一种是直接使用库的API来进行;一种是使用FILE的I/O标准流操作来进行。下面分别说明。 一使用C Run-Time Library库的API来操作文件。因为C Run-Time Library

blpluto的专栏 2104

如何理解C run-time library (C运行时库/CRT)

注: 以下内容部分引自CSND中相关讨论的帖子,并结合自己的理解整理而成。仅供参考。1)运行时库就是 C run-time library,是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些库中的函数.2)C 语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等);所以,C 语言内核开发出来之后,Dennis Ritch

~。~||| 820

第一篇 如何使用C Run-Time Library

一 C Run-Time Libraries的三种可用形式Win32 SDK提供了三种C Run-time library 的可用形式    LIBC.LIB: 单线程程序静态链接到运行时库    LIBCMT.LIB: 多线程程序静态链接到运行时库    CRTDLL.LIB: CRTDLL.DLL的导入库,支持多线程程序的链接。CTRDLL.DLL 本身是Windows NT的

faicker的专栏 2190

CRT (C run-time library)

一 产生 运行时库是程序在运行时所需要的库文件,通常以LIB或DLL形式提供。 C运行时库就是C run-time library,诞生于20世纪70年代,是C而非C++语言世界的概念,C程序运行时需要这些库中的函数。 C 语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等)。所以,C语言内核开发出来之后,Dennis Ritchie和Brian Ker

maomaokuaile的专栏 1769

CRT (C run-time library)简介

来自https://mp.weixin.qq.com/s/qg1mFzMEYv7GDDM72H1DOQ操作系统学习 1.什么是CRT crt是C run-time library的简称,称为C运行时库,它诞生于20世纪70年代,是程序在运行时所需要的库文件,属于C语言世界的概念。 C语言是由贝尔实验室的Dennis Ritchie从1969年到1973年开发的。1973年,Ken Thompson和Ritchie使用C语言重写了90%以上的UNIX系统函数,并且把其中最常用的部分独立出来,形...

lhwhit的专栏 4968

转载 c run-time library

注: 以下内容部分引自CSND中相关讨论的帖子,并结合自己的理解整理而成。仅供参考。1)运行时库就是 C run-time library,是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些库中的函数.2)C 语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等);所以,C语言内核开发出来之后,Dennis Ritc

488
上一篇: ubuntu 下使用ipv6
下一篇: 在vs2008中包括外接调用库的 .lib,.dll,includes
chjp2046
博客等级 码龄18年 13粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值