Заголовочные файлы стандартной библиотеки C++
Интерфейс стандартной библиотеки C++ определяется следующим набором заголовочных файлов
[править] C compatibility headers
Для некоторых стандартных заголовочных файлов Си, имеющих вид xxx.h, стандартная библиотека C++ включает как заголовочный файл с таким же именем, так и другой заголовочный файл с именем cxxx (все значимые заголовочные файлы вида cxxx перечислены ниже).
Кроме исключения в виде complex.h , каждый заголовочный файл стандартной библиотеки C++ вида xxx.h помещает в глобальное пространство имён каждый элемент, который соответствующий заголовочный файл вида cxxx помещает в пространство имён std.
Этим заголовочным файлам разрешается также помещать такие же элементы в протранство имён std, а соответствующим заголовочным файлам вида cxxx разрешается также помещать такие же элементы в глобальное пространство имён: включение <cstdlib> точно предоставит std::malloc и также может предоставить ::malloc. Включение <stdlib.h> точно предоставит ::malloc и также может предоставить std::malloc. Это относится даже к функциям и перегрузкам функций, которые не являются частью стандартной библиотеки Си.
<assert.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cassert> находился в глобальном пространстве имён |
<ctype.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cctype> находился в глобальном пространстве имён |
<errno.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cerrno> находился в глобальном пространстве имён |
<fenv.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cfenv> находился в глобальном пространстве имён |
<float.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cfloat> находился в глобальном пространстве имён |
<inttypes.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cinttypes> находился в глобальном пространстве имён |
<limits.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <climits> находился в глобальном пространстве имён |
<locale.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <clocale> находился в глобальном пространстве имён |
<math.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cmath> находился в глобальном пространстве имён за исключением элементов специальных математических функций |
<setjmp.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <csetjmp> находился в глобальном пространстве имён |
<signal.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <csignal> находился в глобальном пространстве имён |
<stdarg.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cstdarg> находился в глобальном пространстве имён |
<stddef.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cstddef> находился в глобальном пространстве имён за исключением элементов std::byte и связанных функций
|
<stdint.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cstdint> находился в глобальном пространстве имён |
<stdio.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cstdio> находился в глобальном пространстве имён |
<stdlib.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cstdlib> находился в глобальном пространстве имён |
<string.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cstring> находился в глобальном пространстве имён |
<time.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <ctime> находился в глобальном пространстве имён |
<uchar.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cuchar> находился в глобальном пространстве имён |
<wchar.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cwchar> находился в глобальном пространстве имён |
<wctype.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cwctype> находился в глобальном пространстве имён |
[править] Неподдерживаемые заголовочные файлы языка Си
Заголовочные файлы языка Си <stdatomic.h>, <stdnoreturn.h> и <threads.h> не включены в C++ и не имеют эквивалентных вида cxxx.
[править] Пустые заголовочные файлы языка Си
Заголовочные файлы <complex.h>, <ccomplex>, <tgmath.h> и <ctgmath> не содержат никакого содержимого из стандартной библиотеки Си и вместо этого просто включают другие заголовочные файлы стандартной библиотеки C++. Использование всех этих заголовочных файлов считается устаревшим в C++.
<ccomplex> (с C++11)(deprecated in C++17)
|
только лишь включает заголовочный файл <complex> |
<complex.h> (устарело)
|
только лишь включает заголовочный файл <complex> |
<ctgmath> (с C++11)(deprecated in C++17)
|
только лишь включает заголовочные файлы <complex> и <cmath>: перегрузки, эквивалентные содержимому заголовочного файла языка Си tgmath.h уже предоставляются этими заголовочными файлами
|
<tgmath.h> (устарело)
|
только лишь включает заголовочный файл <ctgmath> |
[править] Бессмыленные заголовочные файлы языка Си
Заголовочные файлы <ciso646>, <cstdalign> и <cstdbool> не имеют смысла в C++ потому что макросы, которые они предоставляли для Си, являются ключевыми словами языка C++.
<ciso646>
|
пустой заголовочный файл. Макрос, который находился в iso646.h в Си, является ключевым словом в C++
|
<iso646.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <ciso646> находился в глобальном пространстве имён |
<cstdalign> (с C++11)(deprecated in C++17)
|
определяет один из константных макросов совместимости |
<stdalign.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cstdalign> находился в глобальном пространстве имён |
<cstdbool> (с C++11)(deprecated in C++17)
|
определяет один из константных макросов совместимости |
<stdbool.h> (устарело)
|
ведёт себя так, как если бы каждый элемент из <cstdbool> находился в глобальном пространстве имён |
[править] См. также
| Документация по C — Стандартные заголовочные файлы языка Си
|

