Разница между C / C ++ Runtime Library и C / C ++ Standard Library - PullRequest
41 голосов
/ 08 января 2009

Можете ли вы, ребята, сказать мне разницу между ними?

Кстати, есть что-то, называемое библиотекой C ++ или библиотекой C?

Ответы [ 8 ]

27 голосов
/ 08 января 2009

C++ Standard Library и C Standard Library - это библиотеки, определяемые стандартом C ++ и C, которые предоставляются для использования программами C ++ и C. Это общее значение этих слов, я никогда не видел другого определения этого, и сам C ++ определяет это так:

Стандартная библиотека C ++ предоставляет расширяемую структуру и содержит компоненты для: языковой поддержки, диагностики, общих утилит, строк, локалей, контейнеров, итераторов, алгоритмов, числовых значений и ввода / вывода. Компоненты языковой поддержки требуются определенными частями языка C ++, такими как выделение памяти (5.3.4, 5.3.5) и обработка исключений (раздел 15).

C++ Runtime Library и C Runtime Library используются не одинаково. Некоторые говорят, что библиотека времени выполнения - это та часть, которую программа использует в время выполнения (например, код, реализующий std::type_info или код, поддерживающий обработчики сигналов), в отличие от того, что они используют только во время компиляции (например макроопределения). Другие люди говорят, что библиотека времени выполнения - это библиотека, которая динамически связана с программой во время загрузки, а не статически во время компиляции, хотя такое использование очень редко. общая библиотека или динамически связанная библиотека - лучшие термины для этого.

C++ Library и C Library - это очень широкие термины. Они просто означают, что библиотека написана на C ++ и / или C.

Вышесказанное относится не только к C ++ и / или C. Есть библиотеки Python и есть Python Стандартная библиотека тоже.

11 голосов
/ 21 сентября 2016

Согласно https://en.wikibooks.org/wiki/C_Programming/Standard_libraries#Common_support_libraries, существует очень важное различие между стандартной библиотекой и библиотекой времени выполнения. В то время как Стандартная библиотека определяет функции, которые (всегда) доступны программисту (но не являются частью (начальной) спецификации языка программирования, по крайней мере, в C), библиотека времени выполнения содержит функции, которые необходимы для фактического запуска программы на данная платформа (и зависит от платформы / поставщика).

Например, printf () является частью стандартной библиотеки C, а запуск программы (который во многих случаях невидим для программиста) реализован в библиотеке времени выполнения. Например, вы могли бы написать C-программу, которая не использует стандартную библиотеку, но вам всегда нужна библиотека времени выполнения, потому что в противном случае ваша программа не может быть выполнена. Но, честно говоря, это было бы бесполезно, потому что C-программа без стандартной библиотеки не могла выполнять ввод / вывод, поэтому она не могла рассказать вам о своих впечатляющих результатах.

Что приводит к путанице относительно различий между этими двумя:

  1. В каждом случае необходима / используется библиотека времени выполнения, и почти во всех случаях используется стандартная библиотека. Кроме того, стандартная библиотека может зависеть от библиотеки времени выполнения и, скорее всего, разработана одним и тем же поставщиком. Поэтому различие не является четким и в большинстве случаев не является необходимым.
  2. Microsoft объединила стандартную библиотеку C и библиотеку времени выполнения C и просто называет ее библиотекой времени выполнения C.
10 голосов
/ 08 января 2009

Стандартная библиотека C ++ - это термин, определяющий стандартную библиотеку, которую должен иметь минимальный соответствующий компилятор / набор инструментов. Библиотека времени выполнения C ++ - это библиотека, поставляемая с набором инструментов для обеспечения стандартной функциональности библиотеки и, возможно, некоторых внутренних вещей, которые могут понадобиться компилятору. На самом деле, эти термины часто взаимозаменяемы.

3 голосов
/ 30 июня 2017

Введение

Стандартная библиотека C / C ++ - это любая реализация всего необходимого набора функций, необходимых для выполнения требований стандарта ISO C / C ++. (Википедия: определение стандартной библиотеки C ++ )

A Runtime Library - это любая реализация набора функций, которые обычно предлагаются в форме SDK, которые необходимо установить или статически связать, чтобы позволить программе, использующей этот SDK, иметь все это может понадобиться использовать этот SDK. По этим причинам Runtime Library обычно строго связана с используемым SDK и используемой версией компилятора. (Определение из Википедии универсальной библиотеки времени выполнения )

Библиотека времени выполнения C / C ++

Таким образом, библиотека времени выполнения AC / C ++ должна содержать все функции, необходимые для выполнения того, что требуется Стандартной библиотекой (функциональные возможности только заголовка конкретной реализации Стандартной библиотеки могут быть исключены, поскольку они разрешены в самой программе), а также набор функциональных возможностей, предлагаемых SDK конкретной реализации (опять же, функциональные возможности, предлагаемые только в качестве заголовка, могут быть исключены).

Корпус Microsoft

До MSVC140: в недавней Microsoft VC ++ Runtime использовалась устанавливаемая версия C / C ++ Runtime (VCRedist), эта версия была одинаковой для всех операционных систем.

Начиная с MSVC140: начиная со следующего компилятора MSVC140, библиотека времени выполнения была разделена на две части:

  • UCRT (Universal C Runtime): поставляется с ОС и связана с ней, распространяется через обновления или образы ОС
  • VCRedist: часть, которая, как ожидается, изменится в зависимости от используемого компилятора и которая распространена среди различных версий ОС (управляемых, как до MSVC140).

Вот ссылка на справочную документацию MS C Runtime . Вот ссылка на страницу загрузки MS C Runtime и инструкции по установке .

1 голос
/ 19 июля 2014

Стандартная библиотека C ++ состоит из двух основных частей, а именно: Стандартная библиотека шаблонов (STL) и библиотека времени выполнения. STL реализован только в заголовочных файлах, а реализация библиотеки времени выполнения содержит как заголовочные файлы, так и двоичные файлы (т.е. файлы .lib и .dll на платформах Windows).

0 голосов
/ 28 марта 2019

Другой аспект, может быть, не совсем в случае с C / C ++, но согласно википедии: Библиотека времени выполнения

В компьютерном программировании библиотека времени выполнения (RTL) - это набор низкоуровневых подпрограмм, используемых компилятором для вызова некоторых действий среды выполнения путем вставки вызовов библиотеки времени выполнения в скомпилированный исполняемый двоичный файл.

Для краткости:
Динамическая библиотека предназначена для использования компилятором, а стандартная библиотека предназначена для программиста.

0 голосов
/ 02 июля 2017

Стандартная библиотека - это определенный набор определенных имен и заголовков, как определенный в стандартном документе C ++, библиотека времени выполнения представляет собой двоичный объект бинарный материал, который используется как часть скомпилированной программы, но не включены в исполняемые файлы вашей программы, потому что это так необходимо.

Вместо этого эти функции включены в хост-машину. (хотя вам может потребоваться попросить ваших клиентов установить обновленную версию время выполнения, если у них есть более старый пакет обновления), поэтому они включаются в ваша программа только во время выполнения.

Ref. Ссылки:

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

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

0 голосов
/ 08 января 2009

Библиотека времени выполнения C ++ содержит функции и объекты, поставляемые в C ++, такие как cout, fstream и т. Д.

Библиотека времени выполнения C содержит такие функции C, как printf, scanf, fopen и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...