C / C ++运行时库和C / C ++标准库的区别

你们能告诉我他们之间的区别吗?

顺便说一下,有什么叫C ++库或C库吗?

C++ Standard LibraryC Standard Library是C ++和C标准定义的库,提供给C ++和C程序使用。 这是这些词的常见含义,我从来没有见过它的另一个定义,而C ++本身将其定义为:

C ++标准库提供了一个可扩展的框架,并包含以下组件:语言支持,诊断,通用工具,string,语言环境,容器,迭代器,algorithm,数字和input/输出。 C ++语言的某些部分需要使用语言支持组件,例如内存分配(5.3.4,5.3.5)和exception处理(第15章)。

C++ Runtime LibraryC Runtime Library不是同样使用。 有人说运行时库是程序在运行时使用的部分(比如,实现std::type_info的代码或支持信号处理程序的代码),而不是它们只在编译时使用的东西(如macros定义)。 其他人说,运行时库是一个在加载时dynamic链接到程序,而不是在编译时静态的,尽pipe这种用法很less。 共享库或dynamic链接库是更好的条件。

C++ LibraryC Library是非常广泛的术语。 他们只是意味着一个库是用C ++和/或C编写的。

以上不仅限于C ++和/或C.还有python库,还有一个python 标准库 。

C ++标准库是一个术语,用于定义最低限度符合的编译器/工具集应该具有的标准库。 C ++运行时库是工具集附带的库,用于提供标准的库function,也可能是编译器可能需要的一些内部function。 事实上,这些术语往往是可以互换的。

根据https://en.wikibooks.org/wiki/C_Programming/Standard_libraries#Common_support_libraries ,标准库和运行时库有一个非常重要的区别。 虽然标准库定义了程序员(总是)可用的函数(但不是程序devise语言的(初始)规范的一部分,至less在C中),运行时库包含实际运行程序所必需的函数给定的平台(并且是平台特定的/供应商特定的)。

例如,printf()是C标准库的一部分,而程序启动(在许多情况下,程序员不可见)是在运行时库中实现的。 例如,您可以编写一个不使用标准库的C程序,但是您总是需要运行时库,否则您的程序将无法执行。 但说实话,这样做没什么用处,因为没有标准库的C程序不能进行input/输出,所以它不能告诉你一些关于它的令人印象深刻的结果。

导致这两者之间的区别的混淆是:

  1. 在任何情况下,都需要/使用运行时库,并且在几乎所有情况下都使用标准库。 此外,标准库可能依赖于运行时库,最有可能由同一供应商开发。 因此,区分不明确,在大多数情况下不是必需的。
  2. 微软已经把C标准库和C运行时库放在一起,只是把它叫做C运行时库。

介绍

C / C ++标准库是完成ISO C / C ++标准要求的所有必需function的实现。 ( C ++标准库的维基百科定义)

运行时库是通常以SDK的forms提供的一组function的实现,它们需要被安装或静态链接以使得使用该SDK的程序能够运行并具有使用该SDK所需的所有function。 由于这些原因,运行时库通常与使用的SDK和使用的编译器版本严格相关。 (通用运行时库的 Wikipedia定义)

C / C ++运行时库

因此,AC / C ++运行时间库包含了执行标准库所要求的所有function(可以排除特定标准库实现的头部function,因为它们在程序本身内parsing),还提供了一组提供的function由SDK的具体实现(也可以排除仅作为头提供的function)。

微软的案例

在MSVC140之前:最近的Microsoft VC ++ Runtime曾经有一个可安装版本的C / C ++ Runtime(VCRedist),该版本对于所有的操作系​​统都是一样的。

从MSVC140开始从下一个MSVC140编译器开始,运行时库已经被分成两部分:

  • UCRT(通用C运行时):随操作系统一起提供并与其相关,通过更新或操作系统映像进行分发
  • VCRedist:预期会随着所使用的编译器而改变的部分,这在不同的操作系统版本中是相同的(像MSVC140之前那样pipe理)。

这里是MS C运行时参考文档的链接 。 这里是MS C Runtime下载页面的链接和安装说明 。

C ++运行时库包含C ++提供的函数和对象,如cout,fstream等。

C运行时库包含C函数,如printf,scanf,fopen等等。

C ++标准库由两个主要部分组成,即标准模板库(STL)和运行时库。 STL仅在头文件中实现,而运行时库的实现同时包含头文件和二进制文件(即Windows平台上的.lib和.dll文件)。

标准库是C ++标准文档中定义的一组特定的名称和头文件,运行时库是二进制文件的一个二进制文件,用作编译程序的一部分,但不包含在程序可执行文件中,因为它是所以通常需要。

相反,这些function包含在主机上(尽pipe如果客户有一个较旧的服务包,您可能需要请您的客户安装一个更新的运行时间),以便它们只在“运行时”才被包含到您的程序中。

参考。 链接:

http://msdn2.microsoft.com/en-us/library/cscc687y(VS.80).aspx

http://msdn2.microsoft.com/en-us/library/59ey50w6(VS.80).aspx