你们能告诉我它们之间的区别吗?
顺便问一下,有没有叫做C++库或C库的东西?
C++标准库
和C标准库
是C++和C语言规定的库,供C++和C程序使用。这是这些术语的通用含义,我从未看到过其他定义。C++本身将其定义为:
C++标准库提供了一个可扩展的框架,并包含以下组件:语言支持、诊断、常用工具、字符串、区域设置、容器、迭代器、算法、数值和输入/输出。语言支持组件是C++语言的某些部分所必需的,例如内存分配(5.3.4、5.3.5)和异常处理(第15条款)。
C++运行时库
和C运行时库
并不是同样常用的术语。有些人说运行时库是程序在运行时使用的部分(例如实现std::type_info
的代码或支持信号处理程序的代码),与他们仅在编译时使用的东西(例如宏定义)不同。其他人认为运行时库是在加载时动态链接到程序中的库,与在编译时静态链接的库相对应,尽管这种用法非常罕见。对于这种情况,共享库或动态链接库是更好的术语。
C++库
和C库
是非常广泛的术语。它们只表示一个库是用C++和/或C编写的。
以上不仅局限于C++和/或C,还有Python库以及Python 标准库。C++标准库指的是一个符合最低标准的编译器/工具集应该拥有的标准库。C++运行时库是与工具集一起提供标准库功能和可能一些编译器内部需要的东西的库。实际上,这些术语通常可以互换使用。
C/C++标准库是满足ISO C/C++标准所需的所有功能集的任何实现。(维基百科对C++标准库的定义)
运行时库是一组通常以SDK形式提供的功能实现,需要安装或静态链接到使用该SDK的程序中,以便其具备使用该SDK所需的全部功能。因此,运行时库通常与使用的SDK和编译器版本严格相关。(维基百科对通用运行时库的定义)
因此,C/C++运行时库必须包含执行标准库所需的所有功能(特定标准库实现的仅作为头文件的功能可以排除,因为它们在程序自身中解决),再加上由特定实现的SDK提供的一组功能(同样,作为头文件提供的功能也可以排除)。
MSVC140之前:最近的Microsoft VC++运行时库具有可安装的C/C++运行时版本(VCRedist),该版本适用于所有操作系统。
从MSVC140开始:从下一个MSVC140编译器开始,运行时库被分成两个部分:
C++标准库由两个主要部分组成,即标准模板库(STL)和运行时库。STL仅在头文件中实现,而运行时库的实现包含头文件和二进制文件(即在Windows平台上的.lib和.dll文件)。
C++ 运行时库包含在 C++ 中提供的函数和对象,例如 cout、fstream 等。
C 运行时库包含 C 函数,例如 printf、scanf、fopen 等。
标准库是指C++标准文档中定义的一组特定的名称和头文件,运行时库是编译程序的一部分,但不包含在程序可执行文件中的二进制数据块,因为它们通常需要。
相反,这些功能模块被包含在主机上(尽管您可能需要要求客户安装更新的运行时库,如果他们有较旧的服务包),所以它们只在“运行时”才被包含到您的程序中。
参考链接:
http://msdn2.microsoft.com/en-us/library/cscc687y(VS.80).aspx
http://msdn2.microsoft.com/en-us/library/59ey50w6(VS.80).aspx