C++ Standard Library Header
Die Schnittstelle der C++ Standardbibliothek wird durch die folgende Sammlung von Headern definiert.
[edit] C-Kompatibilitätsheader
Für einige C-Standardbibliotheksheader der Form xxx.h enthält die C++-Standardbibliothek sowohl einen gleichnamigen Header als auch einen Header der Form cxxx (alle sinnvollen cxxx-Header sind oben aufgeführt). Die vorgesehene Verwendung von Headern der Form xxx.h ist ausschließlich für die Interoperabilität bestimmt. Es ist möglich, dass C++-Quelldateien einen dieser Header einschließen müssen, um ISO C-gültig zu sein. Quelldateien, die nicht ebenfalls ISO C-gültig sein sollen, sollten keine der C-Header verwenden.
Mit Ausnahme von complex.h platziert jeder in der C++-Standardbibliothek enthaltene xxx.h-Header jeden Namen, den der entsprechende cxxx-Header im std-Namespace platziert hätte, im globalen Namespace.
Diese Header dürfen auch dieselben Namen im std-Namespace deklarieren, und die entsprechenden cxxx-Header dürfen auch dieselben Namen im globalen Namespace deklarieren: das Einschließen von <cstdlib> stellt definitiv std::malloc bereit und kann auch ::malloc bereitstellen. Das Einschließen von <stdlib.h> stellt definitiv ::malloc bereit und kann auch std::malloc bereitstellen. Dies gilt auch für Funktionen und Funktionsüberladungen, die nicht Teil der C-Standardbibliothek sind.
Hinweise: xxx.h-Header sind in C++98 veraltet und in C++23 wieder zugelassen. Diese Header werden für reinen C++-Code nicht empfohlen, unterliegen aber keiner zukünftigen Entfernung.
| Verhält sich gleich wie <cassert> | |
| Verhält sich so, als ob jeder Name aus <cctype> im globalen Namespace platziert wird | |
| Verhält sich gleich wie <cerrno> | |
| (C++11) |
Verhält sich so, als ob jeder Name aus <cfenv> im globalen Namespace platziert wird |
| Verhält sich gleich wie <cfloat> | |
| (C++11) |
Verhält sich so, als ob jeder Name aus <cinttypes> im globalen Namespace platziert wird |
| Verhält sich gleich wie <climits> | |
| Verhält sich so, als ob jeder Name aus <clocale> im globalen Namespace platziert wird | |
| Verhält sich so, als ob jeder Name aus <cmath> im globalen Namespace platziert wird, außer den Namen von mathematischen Spezialfunktionen | |
| Verhält sich so, als ob jeder Name aus <csetjmp> im globalen Namespace platziert wird | |
| Verhält sich so, als ob jeder Name aus <csignal> im globalen Namespace platziert wird | |
| Verhält sich so, als ob jeder Name aus <cstdarg> im globalen Namespace platziert wird | |
| Verhält sich so, als ob jeder Name aus <cstddef> im globalen Namespace platziert wird, außer den Namen von std::byte und verwandten Funktionen | |
| (C++11) |
Verhält sich so, als ob jeder Name aus <cstdint> im globalen Namespace platziert wird |
| Verhält sich so, als ob jeder Name aus <cstdio> im globalen Namespace platziert wird | |
| Verhält sich so, als ob jeder Name aus <cstdlib> im globalen Namespace platziert wird | |
| Verhält sich so, als ob jeder Name aus <cstring> im globalen Namespace platziert wird | |
| Verhält sich so, als ob jeder Name aus <ctime> im globalen Namespace platziert wird | |
| (C++11) |
Verhält sich so, als ob jeder Name aus <cuchar> im globalen Namespace platziert wird |
| Verhält sich so, als ob jeder Name aus <cwchar> im globalen Namespace platziert wird | |
| Verhält sich so, als ob jeder Name aus <cwctype> im globalen Namespace platziert wird |
[edit] Spezielle C-Kompatibilitätsheader
Der Header <stdatomic.h> deklariert Namen, die auch in der C-Standardbibliothek bereitgestellt werden, und definiert das Makro _Atomic, das in C ein Schlüsselwort ist. Im Gegensatz zu anderen xxx.h-Headern wird kein entsprechender Header <cstdatomic> bereitgestellt.
| (C++23) |
Definiert _Atomic und stellt entsprechende Komponenten in der C-Standardbibliothek bereit |
| Dieser Abschnitt ist unvollständig Grund: Hinzufügen von C++26's <stdbit.h> und <stdckdint.h>, sowie C29's <stdmchar.h>. |
[edit] Leere C-Header
Die Header <complex.h>, <ccomplex>, <tgmath.h> und <ctgmath> enthalten keinen Inhalt aus der C-Standardbibliothek und schließen stattdessen lediglich andere Header aus der C++-Standardbibliothek ein.
| (C++11)(in C++17 veraltet)(in C++20 entfernt) |
Schließt einfach den Header <complex> ein |
| (C++11) |
Schließt einfach den Header <complex> ein |
| (C++11)(in C++17 veraltet)(in C++20 entfernt) |
Schließt einfach die Header <complex> und <cmath> ein: die Überladungen, die den Inhalten des C-Headers <tgmath.h> entsprechen, werden bereits von diesen Headern bereitgestellt |
| (C++11) |
Schließt einfach die Header <complex> und <cmath> ein |
[edit] Sinnlose C-Header
Die Header <ciso646>, <cstdalign> und <cstdbool> sind in C++ bedeutungslos, da die von ihnen in C bereitgestellten Makros in C++ Schlüsselwörter sind.
| (in C++20 entfernt) |
Leerer Header. Die Makros, die in C in iso646.h erscheinen, sind in C++ Schlüsselwörter |
| (C++11)(in C++17 veraltet)(in C++20 entfernt) |
Definiert eine Kompatibilitätsmakrokonstante |
| (C++11)(in C++17 veraltet)(in C++20 entfernt) |
Definiert eine Kompatibilitätsmakrokonstante |
| Hat keine Auswirkung | |
| (C++11) |
Definiert eine Kompatibilitätsmakrokonstante |
| (C++11) |
Definiert eine Kompatibilitätsmakrokonstante |
[edit] Nicht unterstützte C-Header
Die C-Header <stdatomic.h>,(bis C++23) <stdnoreturn.h> und <threads.h> sind in C++ nicht enthalten und haben keine cxxx-Entsprechungen.
[edit] Experimentelle Bibliotheken
C++ TRs/TSs definieren auch mehrere Sammlungen von Headern.
[edit] Siehe auch
| C-Dokumentation für C-Standardbibliotheks-Header
|