library headers from custom c++ c header-files

headers - Lista de archivos de encabezado estándar en C y C++



header file c++ (4)

¿Dónde podría encontrar la lista de todos los archivos de encabezado en C y C ++?

Mientras estoy construyendo una biblioteca, recibo un error como '' tree.h not found ''. Supongo que este es un archivo de encabezado estándar en C y C ++. Esto me provocó la curiosidad de conocer todos los archivos de cabecera y su contribución.

¿Hay algún lugar que pueda buscar?

Estoy trabajando en Solaris Unix.


El encabezado ''tree.h'' no es estándar en ningún lado.

Estándares C

ISO / IEC 9899: 1990 (C89, C90)

Los 15 encabezados 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 encabezados adicionales introducidos en C94 * (Enmienda 1) son:

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

ISO / IEC 9899: 1999 (C99)

Los 6 encabezados adicionales en C99 son:

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

ISO / IEC 9899: 2011 (C11)

Los 5 encabezados adicionales en C2011 (para un total de 29) son:

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

ISO / IEC 9045: 2008 (POSIX 2008, especificación Single Unix)

Tenga en cuenta que POSIX requiere muchos más encabezados (82, incluidos todos los encabezados C99). La lista a continuación repite los encabezados estándar C (C99). Windows requiere un conjunto diferente de encabezados, 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 X / Open Curses requiere otro conjunto de encabezados. Hubo una nueva versión (Versión 7) de esa especificación lanzada en noviembre de 2009 (la primera actualización desde 1996 - las principales diferencias son la pérdida de soporte oficial para termcap y el encabezado C <varargs.h> pre-estándar).

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

Base de estándares de Linux

Hay otros encabezados que podrías necesitar usar. Por ejemplo, no se menciona a <getopt.h> en estas listas, pero si está utilizando GNU Getopt (para opciones largas, por ejemplo), necesitará y usará ese encabezado. Es estándar en Linux según LSB, Linux Standards Base . Una versión anterior del LSB se definió como ISO / IEC 23360: 2006 en varias partes; a partir del 2014-09-21, la versión actual del LSB es 4.1 pero la versión 5.0 está en beta. Hay una sección del documento que define qué encabezados están incluidos, pero no hay una tabla conveniente de los encabezados en la versión que vi. Está estrechamente alineado con POSIX, pero tiene instalaciones adicionales más allá de lo que POSIX define.

Estándares C ++

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

El estándar enumera 32 encabezados específicos 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 encabezados correspondientes a los encabezados de C (que corresponden 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 un encabezado obsoleto, <strstream> , que no se menciona anteriormente en el estándar. La inclusión de ese encabezado 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 encabezado <strstream> aparece explícitamente en las otras versiones del estándar.

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

Los 53 encabezados C ++ 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>

Los 26 encabezados 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 encabezados basada en el proyecto de norma N3797 encontrada en el sitio ISO / IEC JTC1 / SC22 / WG21 . Los datos proceden de los cuadros 14 y 15 en la sección 17.6.1.2 Encabezados , modificados como se indica a continuación. Dado que el estándar no se ha publicado (desde 2014-09-21), esta lista aún no es definitiva.

Los 54 encabezados C ++ 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>

Los 26 encabezados relacionados con C (C11) no han cambiado 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 un nuevo encabezado enumerado para C ++ 14 en comparación con C ++ 11, a saber, <shared_mutex> .

NB: El borrador enumera varios encabezados ( <deque> , <istream> , <stdexcept> , <unordered_set> <stdexcept> <unordered_set> ) dos veces. Además, 5 encabezados de C ++ 11 no se incluyen en las tablas del borrador, a saber, <exception> , <iterator> , <ratio> , <scoped_allocator> y <thread> . Como §18.8 define <exception> , §24 define <iterator> , §20.11 define <ratio> , §30 define <thread> , y §30.4 define <shared_mutex> , este es un ejemplo de por qué no debe confiar en los borradores de estándares como la última palabra, contienen errores.

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

Lista provisional de encabezados en C ++ 17 basada en el borrador N4659 del 2017-03-21. Esta es una transcripción de las tablas 16 y 17 de la sección 20.5.1.2 Encabezados . Este no es el estándar final; en teoría, algo podría cambiar.

Hay 61 encabezados 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>

Los nuevos encabezados comparados con C ++ 14 parecen ser: <any> , <execution> , <filesystem> , <memory_resource> , <optional> , <string_view> , <variant> .

De nuevo, los 26 encabezados relacionados con C (C11) no han cambiado 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>

Ver también ¿Cuáles son las nuevas características en C ++ 17?

Tenga en cuenta que algunos de los encabezados ''C library'' están en deprecated en C ++ 17, específicamente <ccomplex> , <cstdalign> , <cstdbool> , <ctgmath> (y no <ciso646> ). El encabezado C ++ <codecvt> (agregado en C ++ 11) también está en desuso en C ++ 17.

* Los problemas de ''un año'' en las fechas se deben al tiempo que lleva procesar el estándar una vez que se aprueba. ANSI aprobó el estándar C original en 1989 ; La ISO lo aprobó en 1990. La enmienda 1 fue aprobada en 1994; fue lanzado en 1995.


Encontré esta entrada de Wikipedia en la biblioteca estándar C que contiene listas de archivos de encabezado C e información detallada sobre qué estándar forman parte. Eso le da una buena perspectiva histórica y algunos otros detalles similares.

Por supuesto, eso es solo C. Hay un artículo similar que se encuentra en "Biblioteca estándar de C ++". Eso también tiene referencias a algunas otras bibliotecas que pueden no ser "estándar" per se pero sin las cuales C ++ se sentiría "lisiado" para algunas personas acostumbradas a trabajar con las extensiones.


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

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


http://www.cplusplus.com/reference/ enumera todos los encabezados estándar de C ++ y los contenedores C ++ de los archivos de encabezado C.

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