Unterschied zwischen der C/C++-Laufzeitbibliothek und der C/C++-Standardbibliothek

Lesezeit: 6 Minuten

Benutzeravatar von MainID
HauptID

Könnt ihr mir den Unterschied zwischen ihnen sagen?

Übrigens, gibt es so etwas wie C++-Bibliothek oder C-Bibliothek?

  • siehe Detail unter: letrungthang.blogspot.com/2011/04/… hoffe hilfreich

    Benutzer712290

    17. April 2011 um 16:28 Uhr

  • Es ist nur eine Namenskonvention. Die ISO-C-Bibliothek, die ein C oder C++-Compiler muss wird als C-Laufzeitbibliothek bezeichnet. Die ISO-C++-Standardbibliothek (STL) ist eine reine C++-Bibliothek, die Teile der C-Laufzeitbibliothek verwendet. Die STL-Bibliothek ist nicht zwingend erforderlich.

    – Michael Roy

    26. Juni 2017 um 13:09 Uhr

Johannes Schaub - Benutzerbild der litb
Johannes Schaub – litb

Das C++ Standard Library und C Standard Library sind die Bibliotheken, die der C++- und der C-Standard definieren und die C++- und C-Programmen zur Verwendung bereitgestellt werden. Das ist eine gemeinsame Bedeutung dieser Wörter, ich habe noch nie eine andere Definition davon gesehen, und C++ selbst definiert es so:

Das C++-Standardbibliothek bietet ein erweiterbares Framework und enthält Komponenten für: Sprachunterstützung, Diagnose, allgemeine Dienstprogramme, Zeichenfolgen, Gebietsschemata, Container, Iteratoren, Algorithmen, Numerik und Eingabe/Ausgabe. Die Sprachunterstützungskomponenten werden von bestimmten Teilen der Sprache C++ benötigt, wie z. B. Speicherzuordnung (5.3.4, 5.3.5) und Ausnahmeverarbeitung (Klausel 15).

C++ Runtime Library und C Runtime Library werden nicht so gleichermaßen verwendet. Einige sagen, eine Laufzeitbibliothek sei der Teil, den ein Programm verwendet Laufzeit (wie der Code, der implementiert std::type_info oder der Code, der Signal-Handler unterstützt) im Gegensatz zu Sachen, die sie nur zur Kompilierzeit verwenden (wie Makrodefinitionen). Andere Leute sagen, dass eine Laufzeitbibliothek eine ist, die zur Ladezeit dynamisch mit einem Programm verknüpft wird, im Gegensatz zu statisch zur Kompilierzeit, obwohl diese Verwendung sehr selten ist. Gemeinsam genutzte Bibliothek oder dynamisch verknüpfte Bibliothek sind dafür bessere Begriffe.

C++ Library und C Library sind sehr weit gefasste Begriffe. Sie bedeuten lediglich, dass eine Bibliothek in C++ und/oder C geschrieben ist.

Das Obige ist nicht nur auf C++ und/oder C beschränkt. Es gibt Python-Bibliotheken und es gibt Python Standardbibliothek zu.

  • Es ist erwähnenswert, dass GLIBC, das Ding, das die C-Standardbibliothek (printf usw.) unter Linux implementiert, eine gemeinsam genutzte Bibliothek ist, die zur Laufzeit geladen wird (zumindest ist dies die übliche Vorgehensweise). Dadurch können Fehlerbehebungen / Verbesserungen für die C-Standardbibliothek systemweit ausgerollt werden, ohne dass absolut alles auf dem System neu kompiliert werden muss; ein Update legt einfach eine andere .so-Datei ab.

    – Bazza

    2. Juli 2017 um 6:22 Uhr


  • @bazza Was ist mit anderen Betriebssystemen wie Windows und macOS? Dies scheint der einzig gültige Weg zu sein, C(++) Runtime lib auszuliefern.

    – Minh Nghĩa

    4. August um 2:59

Entsprechend https://en.wikibooks.org/wiki/C_Programming/Standard_libraries#Common_support_libraries, gibt es einen sehr wichtigen Unterschied zwischen der Standardbibliothek und der Laufzeitbibliothek. Während die Standardbibliothek Funktionen definiert, die dem Programmierer (immer) zur Verfügung stehen (aber nicht Teil der (ursprünglichen) Spezifikation der Programmiersprache, zumindest in C), enthält die Laufzeitbibliothek Funktionen, die notwendig sind, um ein Programm tatsächlich auszuführen einer bestimmten Plattform (und sind plattformspezifisch / anbieterspezifisch).

Beispielsweise ist printf() Teil der C-Standardbibliothek, während der Programmstart (der für den Programmierer in vielen Fällen unsichtbar ist) in der Laufzeitbibliothek implementiert ist. So könnten Sie beispielsweise ein C-Programm schreiben, das die Standardbibliothek nicht verwendet, aber Sie benötigen immer die Laufzeitbibliothek, da Ihr Programm sonst nicht ausgeführt werden könnte. Aber um ehrlich zu sein, würde dies wenig nützen, weil ein C-Programm ohne die Standardbibliothek keine Ein-/Ausgabe machen könnte, also könnte es Ihnen nichts über seine beeindruckenden Ergebnisse sagen.

Was zu Verwirrung hinsichtlich des Unterschieds zwischen diesen beiden führt, ist:

  1. In jedem Fall wird die Laufzeitbibliothek benötigt/verwendet und in (fast) allen Fällen wird die Standardbibliothek verwendet. Darüber hinaus könnte die Standardbibliothek von der Laufzeitbibliothek abhängig sein und wird höchstwahrscheinlich von demselben Anbieter entwickelt. Daher ist die Unterscheidung nicht eindeutig und in den meisten Fällen nicht erforderlich.
  2. Microsoft hat die C-Standardbibliothek und die C-Laufzeitbibliothek zusammengefügt und nennt sie einfach C-Laufzeitbibliothek.

C++-Standardbibliothek ist ein Begriff, um die Standardbibliothek zu definieren, die ein mindestens konformer Compiler/Toolset haben sollte. Die C++-Laufzeitbibliothek ist die Bibliothek, die mit dem Toolset geliefert wird, um Standardbibliotheksfunktionen bereitzustellen, und wahrscheinlich einige interne Dinge, die der Compiler möglicherweise benötigt. Tatsächlich sind diese Begriffe oft austauschbar.

  • Die Standardbibliothek ist also der Standard, wie er vom C++-Komitee definiert wurde, und die Laufzeitbibliothek ist die Implementierung dieses Standards?

    – Fijoy Vadakkumpadan

    16. März 2016 um 15:40 Uhr

  • Die Laufzeit ist viel breiter als die Standardbibliothek und enthält viele betriebssystemspezifische Aufrufe von betriebssystemspezifischen Diensten. Diese Begriffe sollten nicht untereinander ausgetauscht werden.

    – 8znr

    8. August 2017 um 8:08 Uhr

Benutzeravatar von 8znr
8znr

Einführung

C/C++-Standardbibliothek ist eine Implementierung aller erforderlichen Funktionalitäten, die erforderlich sind, um die Anforderungen des ISO-C/C++-Standards zu erfüllen. (Wikipedia-Definition von a C++-Standardbibliothek)

EIN Laufzeitbibliothek ist jede Implementierung einer Reihe von Funktionalitäten, die normalerweise in Form von SDK angeboten werden und installiert oder statisch verknüpft werden müssen, damit ein Programm, das dieses SDK verwendet, ausgeführt werden kann und alles hat, was es zur Verwendung dieses SDK benötigen könnte. Aus diesen Gründen ist die Laufzeitbibliothek normalerweise eng mit dem verwendeten SDK und der verwendeten Compiler-Version verbunden. (Wikipedia-Definition eines Generikums Laufzeitbibliothek)

C/C++-Laufzeitbibliothek

Die AC/C++-Laufzeitbibliothek muss daher alle Funktionalitäten enthalten, die erforderlich sind, um auszuführen, was von der Standardbibliothek gefordert wird (nur Header-Funktionalitäten der spezifischen Standardbibliotheksimplementierung können ausgeschlossen werden, da sie innerhalb des Programms selbst aufgelöst werden) sowie eine Reihe von angebotenen Funktionalitäten durch das SDK der jeweiligen Implementierung (auch hier können Funktionalitäten, die nur als Header angeboten werden, ausgeschlossen werden).

Der Microsoft-Fall

Vor MSVC140: Die aktuelle Microsoft VC++ Runtime hatte früher eine installierbare Version der C/C++ Runtime (VCRedist), diese Version war für alle Betriebssysteme gleich.

Ab MSVC140: Ab dem nächsten MSVC140-Compiler wurde die Runtime-Bibliothek in zwei Teile aufgeteilt:

  • UCRT (Universal C Runtime): mit dem Betriebssystem geliefert und damit verbunden, verteilt über Updates oder Betriebssystem-Images
  • VCRedist: Der Teil, der sich voraussichtlich mit dem verwendeten Compiler ändert und der unter den verschiedenen Betriebssystemversionen gleich ist (verwaltet wie vor MSVC140).

Hier ist ein Link zur MS C Runtime-Referenzdokumentation. Hier ist ein Link zur MS C Runtime-Downloadseite und Installationsanweisungen.

Die C++-Standardbibliothek besteht aus zwei Hauptteilen, nämlich der Standard Template Library (STL) und der Laufzeitbibliothek. STL wird nur in Header-Dateien implementiert, während eine Implementierung der Laufzeitbibliothek sowohl Header-Dateien als auch Binärdateien (dh .lib- und .dll-Dateien auf Windows-Plattformen) enthält.

Benutzeravatar von lfree
frei

Ein weiterer Aspekt, vielleicht nicht genau der Fall von C/C++, aber laut Wikipedia: Laufzeitbibliothek

In der Computerprogrammierung ist eine Laufzeitbibliothek (RTL) eine Reihe von Routinen auf niedriger Ebene, die von einem Compiler verwendet werden, um einige der Verhaltensweisen einer Laufzeitumgebung aufzurufen, indem Aufrufe an die Laufzeitbibliothek in eine kompilierte ausführbare Binärdatei eingefügt werden.

Um es kurz zu machen:
Die Laufzeitbibliothek soll vom Compiler verwendet werden, und die Standardbibliothek soll vom Programmierer verwendet werden.

Benutzeravatar von sep
Sept

Die C++-Laufzeitbibliothek enthält Funktionen und Objekte, die in C++ bereitgestellt werden, z. B. cout, fstream usw.

Die C-Laufzeitbibliothek enthält C-Funktionen wie printf, scanf, fopen usw.

  • Sie sind Teil der Standardbibliothek, nicht der Laufzeitbibliothek.

    – in3xes

    9. Februar 2018 um 15:57 Uhr


1411750cookie-checkUnterschied zwischen der C/C++-Laufzeitbibliothek und der C/C++-Standardbibliothek

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy