Где я мог найти список всех заголовочных файлов в C и C++?
В то время как я создаю библиотеку, я получаю ошибку как'tree.h not found
'. Я предполагаю, что это - стандартный заголовочный файл в C и C++. Это повысило во мне любопытство для знания всех заголовочных файлов и их вклада.
Существует ли место, которое я могу искать?
Я работаю над Unix Соляриса.
Попробуйте здесь: http://en.cppreference.com/w/
Однако вы также можете обратиться к заголовочным файлам вашей операционной системы. Их можно найти либо в MSDN (Windows), либо с помощью команды man
(POSIX-системы). Или другой источник, если вы работаете под другой ОС.
Заголовок tree.h нигде не является стандартным.
15 стандартных заголовков в C89:
<assert.h> <limits.h> <signal.h> <stdlib.h>
<ctype.h> <locale.h> <stdarg.h> <string.h>
<errno.h> <math.h> <stddef.h> <time.h>
<float.h> <setjmp.h> <stdio.h>
3 Дополнительные заголовки, представленные в C94 * (Поправка 1):
<iso646.h> <wchar.h> <wctype.h>
Шесть дополнительных заголовков в C99:
<complex.h> <inttypes.h> <stdint.h> <tgmath.h>
<fenv.h> <stdbool.h>
Пять дополнительных заголовков в C2011 (всего 29):
<stdalign.h> <stdatomic.h> <stdnoreturn.h> <threads.h> <uchar.h>
Обратите внимание, что POSIX требует гораздо больше заголовков (82, включая все заголовки C99). Список ниже повторяет стандартные заголовки C (C99). Конечно, Windows требует другого набора заголовков.
<aio.h> <libgen.h> <spawn.h> <sys/time.h>
<arpa/inet.h> <limits.h> <stdarg.h> <sys/times.h>
<assert.h> <locale.h> <stdbool.h> <sys/types.h>
<complex.h> <math.h> <stddef.h> <sys/uio.h>
<cpio.h> <monetary.h> <stdint.h> <sys/un.h>
<ctype.h> <mqueue.h> <stdio.h> <sys/utsname.h>
<dirent.h> <ndbm.h> <stdlib.h> <sys/wait.h>
<dlfcn.h> <net/if.h> <string.h> <syslog.h>
<errno.h> <netdb.h> <strings.h> <tar.h>
<fcntl.h> <netinet/in.h> <stropts.h> <termios.h>
<fenv.h> <netinet/tcp.h> <sys/ipc.h> <tgmath.h>
<float.h> <nl_types.h> <sys/mman.h> <time.h>
<fmtmsg.h> <poll.h> <sys/msg.h> <trace.h>
<fnmatch.h> <pthread.h> <sys/resource.h> <ulimit.h>
<ftw.h> <pwd.h> <sys/select.h> <unistd.h>
<glob.h> <regex.h> <sys/sem.h> <utime.h>
<grp.h> <sched.h> <sys/shm.h> <utmpx.h>
<iconv.h> <search.h> <sys/socket.h> <wchar.h>
<inttypes.h> <semaphore.h> <sys/stat.h> <wctype.h>
<iso646.h> <setjmp.h> <sys/statvfs.h> <wordexp.h>
<langinfo.h> <signal.h>
Также обратите внимание, что X / Open Curses требует другого набора заголовков. В ноябре 2009 г. была выпущена новая версия (Release 7) этой спецификации (первое обновление с 1996 г. - основные отличия заключаются в потере официальной поддержки termcap и предстандартного C
заголовок).
<curses.h> <term.h> <uncntrl.h>
Есть и другие заголовки, которые могут вам понадобиться. Например, в этих списках нет упоминания о
, но если вы используете GNU Getopt (например, для длинных опций), вам понадобится и используйте этот заголовок. Это стандарт для Linux в соответствии с LSB, Linux Standards Base . Более старая версия LSB была определена как ISO / IEC 23360: 2006 в нескольких частях; по состоянию на 21 сентября 2014 г. текущая версия LSB - 4.1, но версия 5.0 находится в стадии бета-тестирования. В документе есть раздел, который определяет, какие заголовки должны быть включены, но нет удобной таблицы заголовков в версии, которую я просматривал. Он тесно связан с POSIX, но имеет дополнительные возможности, выходящие за рамки того, что определяет POSIX.
Стандарт перечисляет 32 заголовка, специфичных для C ++:
<algorithm> <iomanip> <list> <ostream> <streambuf>
<bitset> <ios> <locale> <queue> <string>
<complex> <iosfwd> <map> <set> <typeinfo>
<deque> <iostream> <memory> <sstream> <utility>
<exception> <istream> <new> <stack> <valarray>
<fstream> <iterator> <numeric> <stdexcept> <vector>
<functional> <limits>
Также имеется 18 заголовков, соответствующих заголовкам из C (соответствует C94) :
<cassert> <ciso646> <csetjmp> <cstdio> <ctime>
<cctype> <climits> <csignal> <cstdlib> <cwchar>
<cerrno> <clocale> <cstdarg> <cstring> <cwctype>
<cfloat> <cmath> <cstddef>
Любопытно, что в Приложении D (§D.7) перечислены устаревшие заголовки,
, которые ранее не упоминались в стандарте. Включение этого заголовка в GCC ( g ++
) 7.2.0 генерирует предупреждение:
/opt/gcc/v7.2.0/include/c++/7.2.0/backward/backward_warning.h:32:2:
warning: #warning This file includes at least one deprecated or antiquated
header which may be removed without further notice at a future date.
Please use a non-deprecated interface with equivalent functionality
instead. For a listing of replacement headers and interfaces, consult
the file backward_warning.h. To disable this warning use -Wno-deprecated. [-Wcpp]
Заголовок
явно указан в других версиях стандарта.
53 заголовка C ++ в C ++ 11:
<algorithm> <initializer_list> <numeric> <system_error>
<array> <iomanip> <ostream> <thread>
<atomic> <ios> <queue> <tuple>
<bitset> <iosfwd> <random> <type_traits>
<chrono> <iostream> <ratio> <typeindex>
<codecvt> <istream> <regex> <typeinfo>
<complex> <iterator> <scoped_allocator> <unordered_map>
<condition_variable> <limits> <set> <unordered_set>
<deque> <list> <sstream> <utility>
<exception> <locale> <stack> <valarray>
<forward_list> <map> <stdexcept> <vector>
<fstream> <memory> <streambuf>
<functional> <mutex> <string>
<future> <new> <strstream>
26 заголовков, относящихся к C (C11):
<cassert> <cinttypes> <csignal> <cstdio> <cwchar>
<ccomplex> <ciso646> <cstdalign> <cstdlib> <cwctype>
<cctype> <climits> <cstdarg> <cstring>
<cerrno> <clocale> <cstdbool> <ctgmath>
<cfenv> <cmath> <cstddef> <ctime>
<cfloat> <csetjmp> <cstdint> <cuchar>
Предварительный список заголовков на основе проекта стандарта N3797, который можно найти на сайте ISO / IEC JTC1 / SC22 / WG21 . Данные взяты из таблиц 14 и 15 раздела 17.6.1.2 Заголовки с поправками, как указано ниже. Поскольку стандарт не был опубликован (по состоянию на 21 сентября 2014 г.), этот список еще не является окончательным.
54 заголовка C ++ в C ++ 14:
<algorithm> <initializer_list> <numeric> <strstream>
<array> <iomanip> <ostream> <system_error>
<atomic> <ios> <queue> <thread>
<bitset> <iosfwd> <random> <tuple>
<chrono> <iostream> <ratio> <type_traits>
<codecvt> <istream> <regex> <typeindex>
<complex> <iterator> <scoped_allocator> <typeinfo>
<condition_variable> <limits> <set> <unordered_map>
<deque> <list> <shared_mutex> <unordered_set>
<exception> <locale> <sstream> <utility>
<forward_list> <map> <stack> <valarray>
<fstream> <memory> <stdexcept> <vector>
<functional> <mutex> <streambuf>
<future> <new> <string>
26 заголовков, относящихся к C (C11), не изменились по сравнению с C ++ 11:
<cassert> <cinttypes> <csignal> <cstdio> <cwchar>
<ccomplex> <ciso646> <cstdalign> <cstdlib> <cwctype>
<cctype> <climits> <cstdarg> <cstring>
<cerrno> <clocale> <cstdbool> <ctgmath>
<cfenv> <cmath> <cstddef> <ctime>
<cfloat> <csetjmp> <cstdint> <cuchar>
Для C ++ 14 указан один новый заголовок по сравнению до C ++ 11, а именно
.
Примечание. В черновике перечислены несколько заголовков (
,
,
,
) дважды. Кроме того, 5 заголовков из C ++ 11 не указаны в таблицах в черновике, а именно
,
,
,
и
. Поскольку §18.8 определяет
, §24 определяет
, §20.11 определяет
, §30 определяет
, а §30.4 определяет
, это пример того, почему вы не должны доверять черновикам стандартов как последнему слову - они содержат ошибки.
Предварительный список заголовков в C ++ 17 на основе проекта N4659 от 21 марта 2017 года. Это расшифровка таблиц 16 и 17 из раздела 20.5.1.2 Заголовки . Это не окончательный стандарт; теоретически что-то могло измениться.
Есть 61 заголовок C ++:
<algorithm> <future> <numeric> <strstream>
<any> <initializer_list> <optional> <system_error>
<array> <iomanip> <ostream> <thread>
<atomic> <ios> <queue> <tuple>
<bitset> <iosfwd> <random> <type_traits>
<chrono> <iostream> <ratio> <typeindex>
<codecvt> <istream> <regex> <typeinfo>
<complex> <iterator> <scoped_allocator> <unordered_map>
<condition_variable> <limits> <set> <unordered_set>
<deque> <list> <shared_mutex> <utility>
<exception> <locale> <sstream> <valarray>
<execution> <map> <stack> <variant>
<filesystem> <memory> <stdexcept> <vector>
<forward_list> <memory_resource> <streambuf>
<fstream> <mutex> <string>
<functional> <new> <string_view>
Новые заголовки по сравнению с C ++ 14 выглядят так:
,
,
,
, <необязательно>
,
,
.
Опять же, 26 заголовков, относящихся к C (C11), не изменились по сравнению с C ++ 11 и C ++ 14:
<cassert> <cinttypes> <csignal> <cstdio> <cwchar>
<ccomplex> <ciso646> <cstdalign> <cstdlib> <cwctype>
<cctype> <climits> <cstdarg> <cstring>
<cerrno> <clocale> <cstdbool> <ctgmath>
<cfenv> <cmath> <cstddef> <ctime>
<cfloat> <csetjmp> <cstdint> <cuchar>
См. Также Какие новые возможности в C ++ 17?
Обратите внимание, что некоторые из заголовков «библиотеки C» устарели в C ++ 17, в частности
,
,
,
(а не
). Заголовок C ++
(добавлен в C ++ 11) также объявлен устаревшим в C ++ 17.
* Недостатки в датах «на один год» связаны со временем, которое требуется для обработки стандарта после его утверждения. ANSI одобрил исходный стандарт C в 1989 ; ISO одобрил его в 1990 году. Поправка 1 была утверждена в 1994 году; он был выпущен в 1995 году.
Я нашёл эту запись Википедии в стандартной библиотеке на Си, которая содержит списки заголовочных файлов на Си и подробную информацию о стандарте , частью которого они являются . Это дает вам хорошую историческую перспективу и некоторые другие, схожие детали.
Конечно, это только С. Аналогичную статью можно найти в разделе "Стандартная библиотека С++". В ней также есть ссылки на некоторые другие библиотеки, которые могут быть не "стандартными" сами по себе, но без которых Си++ чувствовал бы себя "калекой" для некоторых людей, привыкших работать с расширениями.
http://www.cplusplus.com/reference/ перечисляет все стандартные заголовки C++ и оболочки C++ файлов заголовков C.
tree.h не является частью стандартной библиотеки.