Заголовочные файлы стандартной библиотеки C++
Интерфейс стандартной библиотеки C++ определяется следующим набором заголовочных файлов.
[править] Заголовки совместимости с C
Для некоторых заголовков стандартной библиотеки C в форме xxx.h стандартная библиотека C++ включает в себя заголовок с идентичным названием и другой заголовок ф��рмы cxxx (все значимые заголовки cxxx перечислены выше).
За исключением complex.h , каждый заголовок xxx.h, включенный в стандартную библиотеку C++, помещает в глобальное пространство имён каждое имя, которое соответствующий заголовок cxxx поместил бы в пространство имён std.
Эти заголовки могут также объявлять те же имена в пространстве имён std, а соответствующие заголовки cxxx могут также объявлять те же имена в глобальном пространстве имён: включение <cstdlib> обязательно предоставляет std::malloc, а также может предоставить ::malloc. Включение <stdlib.h> обязательно предоставляет ::malloc, а также может предоставить std::malloc. Это применимо даже к функциям и перегрузкам функций, которые не являются частью стандартной библиотеки C.
Примечание: заголовки xxx.h
объявлены устаревшими в C++98 и не поддерживаются в C++23. Эти заголовки не рекомендуются для чистого кода C++, но не подлежат удалению в будущем.
(устарело) |
Ведёт себя так же, как <cassert> |
(устарело) |
Ведёт себя так, как если бы каждое имя из <cctype> было помещено в глобальное пространство имён |
(устарело) |
Ведёт себя так же, как <cerrno> |
(C++11)(устарело) |
Ведёт себя так, как будто каждое имя из <cfenv> помещается в глобальное пространство имён |
(устарело) |
Ведёт себя так же, как <cfloat> |
(C++11)(устарело) |
Ведёт себя так, как будто каждое имя из <cinttypes> помещается в глобальное пространство имён |
(устарело) |
Ведёт себя так же, как <climits> |
(устарело) |
Ведёт себя так, как будто каждое имя из <clocale> помещается в глобальное пространство имён |
(устарело) |
Ведёт себя так, как будто каждое имя из <cmath> помещается в глобальное пространство имён, за исключением имён специальных математических функций |
(устарело) |
Ведёт себя так, как будто каждое имя из <csetjmp> помещается в глобальное пространство имён |
(устарело) |
Ведёт себя так, как будто каждое имя из <csignal> помещается в глобальное пространство имён |
(устарело) |
Ведёт себя так, как будто каждое имя из <cstdarg> помещается в глобальное пространство имён |
(устарело) |
Ведёт себя так, как будто каждое имя из <cstddef> помещается в глобальное пространство имён, за исключением имён std::byte и связанных функций
|
(C++11)(устарело) |
Ведёт себя так, как будто каждое имя из <cstdint> помещается в глобальное пространство имён |
(устарело) |
Ведёт себя так, как будто каждое имя из <cstdio> помещается в глобальное пространство имён |
(устарело) |
Ведёт себя так, как будто каждое имя из <cstdlib> помещается в глобальное пространство имён |
(устарело) |
Ведёт себя так, как будто каждое имя из <cstring> помещается в глобальное пространство имён |
(устарело) |
Ведёт себя так, как будто каждое имя из <ctime> помещается в глобальное пространство имён |
(C++11)(устарело) |
Ведёт себя так, как будто каждое имя из <cuchar> помещается в глобальное пространство имён |
(устарело) |
Ведёт себя так, как будто каждое имя из <cwchar> помещается в глобальное пространство имён |
(устарело) |
Ведёт себя так, как будто каждое имя из <cwctype> помещается в глобальное пространство имён |
[править] Специальные заголовки совместимости с C
Заголовок <stdatomic.h> объявляет имена, которые также предоставляются в стандартной библиотеке C, и определяет макрос _Atomic
, который является ключевым словом в C. В отличие от других заголовков xxx.h, соответствующий <cstdatomic>
не предоставляется.
(C++23)(устарело) |
Определяет _Atomic и предоставляет соответствующие компоненты в стандартной библиотеке C
|
[править] Пустые заголовки C
Заголовки <complex.h>, <ccomplex>, <tgmath.h> и <ctgmath> не содержат содержимое из стандартной библиотеки C, а вместо этого просто включают другие заголовки из стандартной библиотеки C++. Использование этих заголовков не рекомендуется в C++.
(C++11)(устарело в C++17)(удалено в C++20) |
Просто включает заголовок <complex> |
(C++11)(устарело) |
Просто включает заголовок <complex> |
(C++11)(устарело в C++17)(удалено в C++20) |
Просто включает заголовки <complex> и <cmath>: перегрузки, эквивалентные содержимому заголовка C tgmath.h , уже предоставляются этими заголовками
|
(C++11)(устарело) |
Просто включает заголовки <complex> и <cmath> |
[править] Бессмысленные заголовки C
Заголовки <ciso646>, <cstdalign> и <cstdbool> не имеют смысла в C++, потому что макросы, которые они предоставляют в C, являются ключевыми словами языка C++.
(удалено в C++20) |
Пустой заголовок. Макросы, которые появляются в iso646.h в C являются ключевыми словами в C++
|
(C++11)(устарело в C++17)(удалено в C++20) |
Определяет одну макроконстанту совместимости |
(C++11)(устарело в C++17)(удалено в C++20) |
Определяет одну макроконстанту совместимости |
(устарело) |
Не имеет эффекта |
(C++11)(устарело) |
Определяет одну макроконстанту совместимости |
(C++11)(устарело) |
Определяет одну макроконстанту совместимости |
[править] Неподдерживаемые заголовки C
Заголовки C <stdatomic.h>
, <stdnoreturn.h>
и <threads.h>
не включены в C++ и не имеют cxxx эквивалентов.
[править] Экспериментальные библиотеки
C++ TR/TS также определяют несколько коллекций заголовков.
[править] Смотрите также
Документация C по Заголовки Стандартной Библиотеки C
|