Difference between C/C++ Runtime Library and C/C++ Standard Library

C++C

C++ Problem Overview


Can you guys tell me the difference between them?

By the way, is there something called C++ library or C library?

C++ Solutions


Solution 1 - C++

The C++ Standard Library and C Standard Library are the libraries that the C++ and C Standard define that is provided to C++ and C programs to use. That's a common meaning of those words, i haven't ever seen another definition of it, and C++ itself defines it as this:

> The C++ Standard Library provides an extensible framework, and contains components for: language support, diagnostics, general utilities, strings, locales, containers, iterators, algorithms, numerics, and input/output. The language support components are required by certain parts of the C++ language, such as memory allocation (5.3.4, 5.3.5) and exception processing (clause 15).

C++ Runtime Library and C Runtime Library aren't so equally used. Some say a runtime library is the part that a program uses at runtime (like, the code that implements std::type_info or the code supporting signal handlers) as opposed to stuff that they only use at compile time (like macro definitions). Other people say that a runtime library is one that is linked to a program at load time dynamically, as opposed to statically at compile time, though this use is very seldom. shared library or dynamically linked library are better terms for that.

C++ Library and C Library are very broad terms. They just mean that a library is written in C++ and/or C.

The above is not only limited to C++ and/or C. There are python libraries and there is a python Standard Library too.

Solution 2 - C++

According to https://en.wikibooks.org/wiki/C_Programming/Standard_libraries#Common_support_libraries, there is a very important difference between Standard Library and Runtime Library. While the Standard Library defines functions that are (always) available to the programmer (but not part of the (initial) specification of the programming language, at least in C), the Runtime Library contains functions that are necessary to actually run a program on a given platform (and are platform-specific / vendor-specific).

For example, printf() is part of the C Standard Library, while program startup (which is in many cases invisible to the programmer) is implemented in the Runtime Library. So for example, you could write a C-program which does not use the Standard Library but you always need the Runtime Library because otherwise, your program could not be executed. But to be honest, this would be of little use because a C-program without the Standard Library could not do input/output so it could not tell you something about its impressive results.

What leads to confusion concerning the difference between those two is:

  1. In every case, the Runtime Library is needed/used and in (nearly) all cases, the Standard Library is used. Furthermore, the Standard Library could be dependent on the Runtime Library and is most probably developed by the same vendor. Therefore, the distinction is not clear and in most cases not necessary.
  2. Microsoft has put the C Standard Library and C Runtime Library together and just calls it C Run-Time Library.

Solution 3 - C++

C++ standard library is a term to define the standard library that a minimum conforming compiler/toolset should have. C++ runtime library is the library shipped with the toolset to provide standard library functionality, and probably some internal stuff the compiler might need. In fact, those terms are often interchangeable.

Solution 4 - C++

Introduction

C/C++ Standard Library is any implementation of all the required set of functionalities needed to accomplish what ISO C/C++ standard requires. (Wikipedia definition of a C++ Standard Library)

A Runtime Library is any implementation of a set of functionalities that are usually offered in form of SDK that are required to be installed or statically linked to let a program using that SDK to be run having all that it could need to use that SDK. For these reasons Runtime Library is usually strictly related to the SDK used and the compiler version used. (Wikipedia definition of a generic Runtime Library)

C/C++ Runtime Library

A C/C++ Runtime Library has thus to contain all the functionalities required to execute what is required by the Standard Library (header only functionalities of the specific Standard Library implementation can be excluded because they are resolved within the program itself) plus a set of functionalities offered by the SDK of the specific implementation (again functionalities offered as header only can be excluded).

The Microsoft Case

Before MSVC140: recent Microsoft VC++ Runtime used to have an installable version of the C/C++ Runtime (VCRedist), that version was the same for all the OSes.

Starting from MSVC140: starting from the next MSVC140 compiler, the Runtime library has been split into two parts:

  • UCRT (Universal C Runtime): shipped with the OS and related to it, distributed through updates or OS images
  • VCRedist: the part that is expected to change with the compiler being used and that is common among the different OSes versions (managed like before MSVC140).

Here is a link to MS C Runtime reference documentation. Here is a link to MS C Runtime download page and install instructions.

Solution 5 - C++

C++ Standard Library consists of two main parts, namely the Standard Template Library (STL) and the runtime library. STL is implemented in header files only, while an implementation of the runtime library contains both header files and binaries (i.e., .lib and .dll files on Windows platforms).

Solution 6 - C++

Another aspect, maybe not exactly the case of C/C++, but according to the wikipedia: Runtime library

> In computer programming, a runtime library (RTL) is a set of low-level routines used by a compiler to invoke some of the behaviors of a runtime environment, by inserting calls to the runtime library into compiled executable binary.

To be concise:
Runtime library is meant to be used by the compiler and standard library is meant to be used by the programmer.

Solution 7 - C++

C++ runtime library contains functions and objects supplied in C++, such as cout, fstream and so on.

C runtime library contains C functions such as printf, scanf, fopen, and so on.

Solution 8 - C++

The standard library is a particular set of defined names and headers as defined in the C++ standard document, a runtime library is a blob of binary stuff that is used as a part of the compiled program but is not included in your program executables because it is so commonly needed.

Instead, those pieces of functionality are included on the host machine (although you might need to ask your customers to install an updated runtime if they have an older service pack) so they get included into your program only at "runtime".

Ref. links:

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

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMainIDView Question on Stackoverflow
Solution 1 - C++Johannes Schaub - litbView Answer on Stackoverflow
Solution 2 - C++BinabikView Answer on Stackoverflow
Solution 3 - C++mmxView Answer on Stackoverflow
Solution 4 - C++8znrView Answer on Stackoverflow
Solution 5 - C++LingxiView Answer on Stackoverflow
Solution 6 - C++lfreeView Answer on Stackoverflow
Solution 7 - C++sepView Answer on Stackoverflow
Solution 8 - C++Prakhar AgarwalView Answer on Stackoverflow