Pregunta

¿Dónde puedo encontrar la lista de todos los archivos de cabecera en C y C ++?

Mientras estoy construyendo una biblioteca, estoy consiguiendo un error como 'tree.h not found'. Supongo que esto es un archivo de cabecera estándar en C y C ++. Esta elevada en mí la curiosidad de saber todos los archivos de cabecera y su contribución.

¿Hay un lugar donde puedo buscar?

Estoy trabajando en Unix Solaris.

¿Fue útil?

Solución

Trate aquí: http://en.cppreference.com/w/

Sin embargo, también puede estar refiriéndose a los archivos de cabecera de su sistema operativo. Estos se pueden encontrar ya sea en MSDN (Windows) o mediante un comando man (sistemas POSIX). O de otra fuente, si estás en otro sistema operativo.

Otros consejos

La cabecera 'tree.h' no es estándar en cualquier lugar.


Normas c

ISO / IEC 9899: 1990 (C89, C90)

Los 15 cabeceras estándar en C89 son:

<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 / enm.1: 1995

Los 3 cabeceras extra introducidas en C94 * (Enmienda 1) son:

<iso646.h>  <wchar.h>  <wctype.h>

ISO / IEC 9899: 1999 (C99)

Las 6 cabeceras extra en C99 son:

<complex.h>  <inttypes.h>  <stdint.h>  <tgmath.h>
<fenv.h>     <stdbool.h>

ISO / IEC 9899: 2011 (C11)

Los 5 cabeceras extra en C2011 (para un total de 29) son:

<stdalign.h>  <stdatomic.h>  <stdnoreturn.h>  <threads.h>  <uchar.h>

ISO / IEC 9045: 2008 (POSIX 2008, Single UNIX Specification)

Tenga en cuenta que POSIX requiere muchas más cabeceras (82, incluyendo todo el C99 cabeceras). La lista siguiente repite las cabeceras estándar C (C99). Windows requiere un conjunto diferente de las cabeceras, por supuesto.

<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>

Tenga en cuenta, también, que de X / Open Maldiciones requiere otro conjunto de cabeceras. Hubo una nueva versión (Release 7) de dicha especificación lanzado en noviembre de 2009. (La primera actualización desde 1996 - las diferencias principales son la pérdida de apoyo oficial para termcap y la cabecera de C <varargs.h> pre-estándar)

<curses.h>  <term.h>  <uncntrl.h>

Linux Standards Base

Hay otras cabeceras que pueda necesitar para su uso. Por ejemplo, no hay ninguna mención de <getopt.h> en estas listas, pero si usted está usando GNU Getopt (para opciones largas, por ejemplo), se le necesita y utiliza esa cabecera. Es estándar en Linux según la rel="noreferrer"> . Una versión anterior de la LSB se define como la norma ISO / IEC 23360: 2006 en varias partes; a partir del 21/09/2014, la versión actual de la LSB es 4.1 pero la versión 5.0 está en fase beta. Hay una sección del documento que define qué encabezados se incluyen, pero no hay una mesa conveniente de las cabeceras en la versión miré. Está estrechamente alineado con POSIX, pero con instalaciones adicionales más allá de lo POSIX define.


C Normas ++

ISO / IEC 14882: 1998 (C ++ 98)

Las listas estándar 32 cabeceras específicas para 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>

También hay 18 cabeceras correspondientes a las cabeceras de C (correspondiente a C94):

<cassert>  <ciso646>  <csetjmp>  <cstdio>   <ctime>
<cctype>   <climits>  <csignal>  <cstdlib>  <cwchar>
<cerrno>   <clocale>  <cstdarg>  <cstring>  <cwctype>
<cfloat>   <cmath>    <cstddef>

Curiosamente, el Anexo D (§D.7) enumera una cabecera en desuso, <strstream>, que no se menciona anteriormente en la norma. Incluyendo la cabecera con GCC (g++) 7.2.0 genera una advertencia:

/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]

El <strstream> cabecera aparece explícitamente en las otras versiones de la norma.

ISO / IEC 14882: 2011 (C ++ 11)

Las 53 C encabezados ++ en C ++ 11 son:

<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>

Las 26 cabeceras relacionados con C (C11) son:

<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 / IEC 14882: 2014 (C ++ 14)

Lista provisional de cabeceras basado en el proyecto de norma N3797 encontrar en ISO / IEC JTC 1 sitio / SC22 / WG21 . Los datos son de las tablas 14 y 15 en la sección 17.6.1.2 Conectores , modificado como se indica a continuación. Dado que la norma no se ha publicado (en fecha 21/09/2014), sin embargo, esta lista no es definitiva.

Las 54 C encabezados ++ en C ++ 14 son:

<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>

Las 26 cabeceras relacionados con C (C11) son sin cambios en comparación con 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>

Hay una nueva cabecera enumerado para C ++ 14 en comparación con C ++ 11, a saber <shared_mutex>.

Nota: El proyecto enumera una serie de las cabeceras (<deque>, <istream>, <stdexcept>, <unordered_set>) dos veces. Además, 5 cabeceras de C ++ 11 no se muestran en las tablas en el proyecto, a saber <exception>, <iterator>, <ratio>, <scoped_allocator> y <thread>. Desde §18.8 define <exception>, §24 define <iterator>, §20.11 define <ratio>, §30 define <thread> y §30.4 define <shared_mutex>, esto es un ejemplo de por qué no debe confiar en los proyectos de normas como la última palabra -. contienen errores

ISO / IEC 14882: 2017 (C ++ 17)

Lista provisional de cabeceras en C ++ 17 basado en el proyecto de N4659 de fecha 21/03/2017. Esta es una transcripción de los cuadros 16 y 17 de la sección 20.5.1.2 Headers . Este no es el estándar final; en teoría, podría cambiar algo.

Hay 61 C encabezados ++:

<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>

Las nuevas cabeceras en comparación con C ++ 14 parecen ser:. <any>, <execution>, <filesystem>, <memory_resource>, <optional>, <string_view>, <variant>

Una vez más, las 26 cabeceras relacionados con C (C11) son sin cambios en comparación con C ++ 11 y 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>

¿Cuáles son las nuevas características de C ++ 17?

Tenga en cuenta que algunos de los encabezados 'C' de la biblioteca están obsoleta en C ++ 17, <ccomplex> específicamente, <cstdalign>, <cstdbool>, <ctgmath> (y no <ciso646>). El C ++ <codecvt> cabecera (añadido en C ++ 11) también está en desuso en C ++ 17.


* El cuestiones 'fuera por un año en las fechas son debido al tiempo que se tarda en procesar el estándar después de que sea aprobado. ANSI aprobó el estándar C original en 1989 ; ISO aprobó en 1990. Enmienda 1 fue aprobado en 1994; que fue lanzado en 1995.

http://www.cplusplus.com/reference/ enumera todas las cabeceras estándar C ++ y el C ++ envoltorios de archivos de cabecera C.

tree.h no es parte de la biblioteca estándar.

entrada de Wikipedia sobre el estándar C biblioteca que contiene, listas de archivos de cabecera C e información detallada sobre que estándar que son parte de. Eso le da una perspectiva histórica agradable y algunos otros, detalles similares.

Por supuesto que es sólo C. Hay un artículo similar que se encuentran en "biblioteca de C ++ estándar". Eso también tiene algunas referencias a otras bibliotecas que pueden no ser "estándar" de por sí, pero sin la cual C ++ se sentiría "paralizado" a algunas personas acostumbradas a trabajar con las extensiones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top