Liste des fichiers d'en-tête standard en C et c++
Où puis-je trouver la liste de tous les fichiers d'en-tête en C et C++?
pendant que je construis une bibliothèque, j'obtiens une erreur comme tree.h not found
".
Je suppose que c'est un fichier d'en-tête standard en C et C++. Cela a soulevé en moi la curiosité de connaître tous les fichiers d'en-tête et leur contribution.
Est-il un endroit où je peux chercher?
je travaille sur Solaris Unix.
4 réponses
Essayez ici: http://en.cppreference.com/w /
cependant, vous pouvez également vous référer aux fichiers d'en-tête de votre système D'exploitation. Ceux-ci peuvent être trouvés sur MSDN (Windows) ou par man
commande (systèmes POSIX). Ou une autre source si vous êtes sur un autre OS.
L'en-tête 'de l'arbre.h' n'est standard nulle part.
Normes C
ISO/CEI 9899:1990 (C89, C90)
les 15 en-têtes standards en C89 sont:
<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>
ISO/IEC 9899:1990 / Amd.1: 1995
les 3 en-têtes supplémentaires introduits en C94 * (Amendement 1) sont:
<iso646.h> <wchar.h> <wctype.h>
ISO / CEI 9899: 1999 (C99)
les 6 en-têtes supplémentaires en C99 sont:
<complex.h> <inttypes.h> <stdint.h> <tgmath.h>
<fenv.h> <stdbool.h>
ISO / CEI 9899: 2011 (C11)
les 5 en-têtes supplémentaires en C2011 (pour un total de 29) sont:
<stdalign.h> <stdatomic.h> <stdnoreturn.h> <threads.h> <uchar.h>
ISO/IEC 9045:2008 (POSIX 2008, Single Unix Specification)
Note que POSIX exige beaucoup plus d'en-têtes (82, y compris tous les C99 en-têtes). La liste ci-dessous reprend les en-têtes standard C (C99). Windows nécessite un ensemble différent de headers, bien sûr.
<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>
Notez aussi que X/malédictions Ouvertes nécessite un autre jeu de en-têtes. Il y avait une nouvelle version (Version 7) de cette spécification publiée en novembre 2009 (la première mise à jour depuis 1996 - les principales différences sont la perte de support officiel pour termcap et pré-standard c <varargs.h>
en-tête).
<curses.h> <term.h> <uncntrl.h>
Linux Base De Normes
Il y a d'autres têtes que vous pourriez avoir besoin d'utiliser. Par exemple, il n'y a aucune mention de <getopt.h>
dans ces listes, mais si vous utilisez GNU Getopt (pour les options longues, par exemple), vous aurez besoin et utiliserez cet en-tête. Il est standard sur Linux selon le LSB, Linux Standards Base . Une ancienne version de la LSB a été définie comme ISO/IEC 23360:2006 en plusieurs parties; en date du 2014-09-21, la version actuelle de la LSB est 4.1 mais la version 5.0 est en version bêta. Il y a une section du document qui définit quels en-têtes sont inclus, mais il n'y a pas de tableau pratique des en-têtes dans la version que j'ai regardé. Il est étroitement aligné avec POSIX, mais dispose d'installations supplémentaires au-delà de ce que POSIX définit.
Normes C++
ISO / CEI 14882: 1998 (C++98)
le standard liste 32 en-têtes spécifiques à 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>
il y a aussi 18 en-têtes correspondant à des en-têtes de C (correspondant à C94):
<cassert> <ciso646> <csetjmp> <cstdio> <ctime>
<cctype> <climits> <csignal> <cstdlib> <cwchar>
<cerrno> <clocale> <cstdarg> <cstring> <cwctype>
<cfloat> <cmath> <cstddef>
curieusement, L'Annexe D (§D. 7) énumère un en-tête déprécié, <strstream>
, qui n'est pas mentionné plus tôt dans la norme. Incluant cet en-tête avec GCC ( g++
) 7.2.0 génère un avertissement:
/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]
L'en-tête <strstream>
est explicitement listé dans les autres versions de la norme.
ISO / CEI 14882: 2011 (C++11)
53 C++ en-têtes en 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>
les 26 en-têtes liés à C (C11) sont:
<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>
ISO / CEI 14882: 2014 (C++14)
liste provisoire des en-têtes fondée sur le projet de norme N3797 trouvé sur le site ISO/CEI JTC1/SC22/WG21 . Les données proviennent des tableaux 14 et 15 de la section 17.6.1.2 en-têtes , modifié comme indiqué ci-dessous. Puisque la norme n'a pas été publié (2014-09-21), cette liste n'est pas encore définitif.
54 C++ en-têtes en 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>
les 26 en-têtes liés à C (C11) sont inchangés par rapport à 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>
il y a un nouvel en-tête listé pour C++14 comparé à C++11, à savoir <shared_mutex>
.
NB: le projet énumère un certain nombre d'en-têtes ( <deque>
, <istream>
, <stdexcept>
, <unordered_set>
) deux fois. En outre, 5 en-têtes de C++11 ne sont pas énumérés dans les tableaux du projet, à savoir <exception>
, <iterator>
, <ratio>
, <scoped_allocator>
, et <thread>
. Comme l'article 18.8 définit <exception>
, l'article 24 définit <iterator>
, l'article 20.11 définit <ratio>
, l'article 30 définit <thread>
, et l'article 30.4 définit <shared_mutex>
, c'est un exemple de la raison pour laquelle vous ne devriez pas faire confiance au projet les normes en tant que mot de la fin - elles contiennent des erreurs.
ISO / CEI 14882: 2017 (C++17)
liste provisoire des en-têtes en C++17 basée sur le projet N4659 daté 2017-03-21. Il s'agit d'une transcription des tableaux 16 et 17 de la section 20.5.1.2 Headers . Ce n'est pas la norme finale; en théorie, quelque chose pourrait changer.
Il y a 61 en-têtes 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>
les nouveaux en-têtes par rapport à C++14 semblent être: <any>
, <execution>
, <filesystem>
, <memory_resource>
, <optional>
, <string_view>
, <variant>
.
encore une fois, les 26 en-têtes liés à C (C11) sont inchangés par rapport à C++11 et 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>
Voir aussi quelles sont les nouvelles fonctionnalités en C++17?
Note que certains des en-têtes de la "bibliothèque C" sont déprécié en C++17, spécifiquement <ccomplex>
, <cstdalign>
, <cstdbool>
, <ctgmath>
(et non <ciso646>
). L'en-tête c++ <codecvt>
(ajouté en C++11) est également déprécié en C++17.
* les problèmes liés au délai de mise en oeuvre de la norme après son approbation sont attribuables au temps qu'il faut pour la mettre en oeuvre. ANSI approuvé la norme C originale en 1989 ; approuvé par L'ISO en 1990. L'Amendement 1 a été approuvé en 1994; il a été publié en 1995.
http://www.cplusplus.com/reference / liste tous les en-têtes C++ standard et les en-têtes C++ des fichiers d'en-tête C.
de l'arbre.h ne fait pas partie de la bibliothèque standard.
j'ai trouvé cette entrée Wikipedia sur la bibliothèque C standard qui contient, des listes de fichiers d'en-tête C et des informations détaillées sur dont standard font partie. Cela vous donne une belle perspective historique et d'autres détails similaires.
bien sûr, c'est seulement le C. Il y a un article similaire qui se trouve sous "C++ standard library". Il y a aussi des références à d'autres bibliothèques qui peuvent ne pas être "standard"" en soi, mais sans quoi C++ se sentirait "estropié" pour certaines personnes habituées à travailler avec les extensions.