Liste des fichiers d’en-tête standard en C et C ++

Où pourrais-je trouver la liste de tous les fichiers d’en-tête en C et C ++?

Pendant que je construis une bibliothèque, je reçois une erreur telle que ” tree.h not found “. Je suppose que c’est un fichier d’en-tête standard en C et C ++. Cela m’a suscité la curiosité de connaître tous les fichiers d’en-tête et leur consortingbution.

Y a-t-il un endroit que je peux rechercher?

Je travaille sur Solaris Unix.

Essayez ici: http://fr.cppreference.com/w/

Cependant, vous pouvez également faire référence aux fichiers d’en-tête de votre système d’exploitation. Ceux-ci peuvent être trouvés soit sur MSDN (Windows) ou par la commande man (systèmes POSIX). Ou une autre source si vous utilisez un autre système d’exploitation.

L’en-tête ‘tree.h’ n’est pas standard partout.


C normes

ISO / IEC 9899: 1990 (C89, C90)

Les 15 en-têtes standard de C89 sont:

                

ISO / IEC 9899: 1990 / Amd.1: 1995

Les 3 en-têtes supplémentaires introduits dans C94 * (amendement 1) sont les suivants:

    

ISO / IEC 9899: 1999 (C99)

Les 6 en-têtes supplémentaires en C99 sont:

       

ISO / IEC 9899: 2011 (C11)

Les 5 en-têtes supplémentaires de C2011 (pour un total de 29) sont:

      

ISO / IEC 9045: 2008 (POSIX 2008, spécification Unix unique)

Notez que POSIX nécessite beaucoup plus d’en-têtes (82, y compris tous les en-têtes C99). La liste ci-dessous répète les en-têtes standard C (C99). Windows nécessite un ensemble d’en-têtes différent, bien sûr.

                                                                                   

Notez également que X / Open Curses nécessite un autre jeu d’en-têtes. Il y avait une nouvelle version (Release 7) de cette spécification publiée en novembre 2009 (la première mise à jour depuis 1996 – les principales différences sont la perte du support officiel pour termcap et l’en-tête C pré-standard).

    

Linux Standards Base

Il y a d’autres en-têtes que vous pourriez avoir besoin d’utiliser. Par exemple, il n’y a aucune mention de dans ces listes, mais si vous utilisez GNU Getopt (pour les options longues, par exemple), vous aurez besoin de cet en-tête. Il est standard sous Linux selon le LSB, Linux Standards Base . Une ancienne version du LSB était définie comme ISO / IEC 23360: 2006 en plusieurs parties; en date du 21/09/2014, la version actuelle du LSB est la 4.1, mais la version 5.0 est en version bêta. Il y a une section du document qui définit les en-têtes inclus, mais il n’y a pas de tableau pratique des en-têtes dans la version que j’ai examinée. Il est étroitement lié à POSIX, mais dispose d’outils supplémentaires au-delà de ce que POSIX définit.


Normes C ++

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

La norme répertorie 32 en-têtes spécifiques à C ++:

                                 

Il existe également 18 en-têtes correspondant aux en-têtes de C (correspondant à C94):

                   

Curieusement, l’Annexe D (§ D.7) répertorie un en-tête obsolète, , qui n’est pas mentionné plus haut dans la norme. Inclure 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 est explicitement répertorié dans les autres versions de la norme.

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

Les en-têtes C ++ 53 dans C ++ 11 sont les suivants:

                                                      

Les 26 en-têtes liés à C (C11) sont:

                           

ISO / IEC 14882: 2014 (C ++ 14)

Liste provisoire des en-têtes basée sur le projet de norme N3797 trouvé sur le site ISO / IEC JTC1 / SC22 / WG21 . Les données proviennent des tableaux 14 et 15 de la section 17.6.1.2 En- têtes , modifiés comme indiqué ci-dessous. Comme la norme n’a pas été publiée (au 21/09/2014), cette liste n’est pas encore définitive.

Les 54 en-têtes C ++ de C ++ 14 sont les suivants:

                                                       

Les 26 en-têtes liés à C (C11) sont inchangés par rapport à C ++ 11:

                           

Il existe un nouvel en-tête répertorié pour C ++ 14 par rapport à C ++ 11, à savoir .

NB: Le brouillon répertorie un nombre d’en-têtes ( , , , ) deux fois. De plus, 5 en-têtes de C ++ 11 ne sont pas répertoriés dans les tables du brouillon, à savoir , , , et . Puisque le §18.8 définit , le §24 définit , le §20.11 définit , le §30 définit , et le §30.4 définit , ceci est un exemple pourquoi vous ne devriez pas faire confiance aux projets de normes comme étant le dernier mot – ils contiennent des erreurs.

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

Liste provisoire des en-têtes en C ++ 17 basée sur le projet N4659 du 2017-03-21. Ceci est une transcription des tableaux 16 et 17 de la section 20.5.1.2 En- têtes . Ce n’est pas la norme finale; En théorie, quelque chose pourrait changer.

Il existe 61 en-têtes C ++:

                                                              

Les nouveaux en-têtes par rapport à C ++ 14 semblent être: , , , , , , .

Là encore, les 26 en-têtes liés à C (C11) sont inchangés par rapport à C ++ 11 et C ++ 14:

                           

Voir aussi Quelles sont les nouvelles fonctionnalités de C ++ 17?

Notez que certains en-têtes de la bibliothèque C sont déconseillés dans C ++ 17, en particulier , , , (et non ). L’en-tête C ++ (ajouté en C ++ 11) est également obsolète en C ++ 17.


* Les problèmes «arrêtés d’ici un an» dans les dates sont dus au temps nécessaire au traitement de la norme après son approbation. ANSI a approuvé la norme C originale en 1989 ; L’ISO l’a approuvé en 1990. L’amendement 1 a été approuvé en 1994; il a été libéré en 1995.

http://www.cplusplus.com/reference/ répertorie tous les en-têtes C ++ standard et les wrappers C ++ des fichiers d’en-tête C.

tree.h ne fait pas partie de la bibliothèque standard.

J’ai trouvé cette entrée Wikipedia sur la bibliothèque standard C qui contient des listes de fichiers d’en-tête C et des informations détaillées sur la norme dont ils font partie. Cela vous donne une belle perspective historique et d’autres détails similaires.

Bien sûr, c est juste C. Il y a un article similaire sous “Bibliothèque standard C ++”. Cela a également des références à d’autres bibliothèques qui peuvent ne pas être “standard” en soi mais sans lesquelles C ++ se sentirait “paralysé” par certaines personnes habituées à travailler avec les extensions.