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

时间:2009-01-08 15:05:17

标签: c++ c

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

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

8 个答案:

答案 0 :(得分:27)

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

  

C ++标准库提供了一个可扩展的框架,并包含以下组件:语言支持,诊断,常规实用程序,字符串,语言环境,容器,迭代器,算法,数字和输入/输出。 C ++语言的某些部分需要语言支持组件,例如内存分配(5.3.4,5.3.5)和异常处理(第15条)。

C++ Runtime LibraryC Runtime Library并未如此平等使用。有人说运行时库是程序在运行时中使用的部分(比如,实现std::type_info的代码或支持信号处理程序的代码),而不是它们仅在编译时使用的东西时间(如宏定义)。其他人说运行时库是在加载时动态链接到程序的库,而不是在编译时静态链接,尽管这种用法很少。共享库或动态链接库是更好的术语。

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

以上不仅限于C ++和/或C.有python库,也有python Standard Library

答案 1 :(得分:11)

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

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

导致对这两者之间差异的混淆是:

  1. 在每种情况下,都需要/使用运行时库,并且(几乎)所有情况下都使用标准库。此外,标准库可能依赖于运行时库,并且最有可能由同一供应商开发。因此,区别不明确,在大多数情况下不是必要的。
  2. Microsoft已将C标准库和C运行时库放在一起,只需将其称为C运行时库。

答案 2 :(得分:10)

C ++标准库是一个术语,用于定义最低符合标准的编译器/工具集应具有的标准库。 C ++运行时库是随工具集一起提供的库,用于提供标准库功能,可能还有编译器可能需要的一些内部功能。实际上,这些术语通常是可以互换的。

答案 3 :(得分:3)

简介

C / C ++标准库是完成ISO C / C ++标准所需的所有必需功能集的任何实现。 (维基百科对C++ Standard Library的定义)

运行时库是一组功能的任何实现,这些功能通常以SDK的形式提供,需要安装或静态链接才能让使用该SDK的程序全部运行它可能需要使用该SDK。由于这些原因,运行时库通常与使用的SDK和使用的编译器版本严格相关。 (维基百科对通用Runtime Library的定义)

C / C ++运行时库

AC / C ++运行时库因此包含执行标准库所需的所有功能(可以排除特定标准库实现的标题功能,因为它们在程序本身内被解析)加上一组特定实现的SDK提供的功能(同样可以排除仅作为标题提供的功能)。

Microsoft Case

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

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

  • UCRT(Universal C Runtime):随操作系统提供并与之相关,通过更新或操作系统映像分发
  • VCRedist:预期随使用的编译器而改变的部分,这在不同的OS版本中很常见(像MSVC140之前那样管理)。

这是link to MS C Runtime reference documentation。 这是link to MS C Runtime download page and install instructions

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

标准库是一组特定的已定义名称和标题库 在C ++标准文档中定义的,运行时库是一个blob 二进制的东西,用作编译程序的一部分但不是 包含在你的程序可执行文件中,因为它是如此常见的。

相反,这些功能包含在主机上 (尽管您可能需要让客户安装更新的产品 运行时,如果他们有一个较旧的服务包),所以他们被包含在内 你的程序只在"运行时"。

参考。链接:

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

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

答案 7 :(得分:0)

另一方面,也许不完全是C / C ++,但根据维基百科:Runtime library

  

在计算机编程中,运行时库(RTL)是一组低级例程,供编译器用来通过将对运行时库的调用插入已编译的可执行二进制文件中来调用运行时环境的某些行为。

为简洁起见:
运行时库供编译器使用,而标准库供程序员使用。