Qu'est-ce que le format de fichier H ?
Les fichiers .h sont créés lors du travail avec les langages C, C++ ou Objective-C.
Contenu des fichiers .h
Les fichiers avec l'extension .h contiennent des déclarations de fonctions ou des macros, et peuvent contenir des données telles que :
- des déclarations de variables et de constantes,
- des définitions de structures (struct), d'énumérations (enum) et de types,
- des références
#includevers d'autres fichiers d'en-tête
En pratique, les fichiers .h sont utilisés pour contenir des déclarations partagées - du code qui est référencé fréquemment à travers plusieurs fichiers sources .c et .cpp. Cela permet une meilleure lisibilité du code source et une plus grande efficacité pour le programmeur. Les fonctions et macros définies dans les fichiers .h les rendent réutilisables d'un projet à l'autre et facilitent le partage de code. Cela facilite également la mise à jour du code, car l'interface est stockée dans un seul endroit bien connu.
Comment les fichiers .h sont-ils utilisés ?
Le stockage des déclarations partagées dans des fichiers .h les rend plus faciles à accéder et à ajouter au code source du projet. Pendant la compilation, le préprocesseur C développe chaque directive #include, copiant le contenu de l'en-tête dans l'unité de traduction avant que le compilateur ne continue. Les en-têtes système tels que <stdio.h> ou <vector> sont fournis avec le compilateur et n'ont pas besoin d'être distribués avec votre projet ; les fichiers .h spécifiques au projet font cependant partie de l'arborescence source et voyagent avec elle. De nombreux projets C++ utilisent également des fichiers .hpp pour distinguer les en-têtes exclusivement C++ des en-têtes .h en C pur, bien que les deux reposent sur le même mécanisme #include.
Sécurité et sûreté
RISQUE : LOWUn en-tête .h est un code source en texte brut et ne s'exécute pas par lui-même, donc l'ouvrir ou le lire dans un éditeur est sûr. La mise en garde réelle concerne la COMPILATION, pas le format de fichier : le code d'en-tête (et source) provenant d'un projet non fiable peut contenir une logique malveillante qui ne s'exécute qu'une fois que vous construisez et lancez le programme. Par conséquent, examinez et compilez le code C/C++ inconnu uniquement dans un bac à sable (sandbox) ou une machine virtuelle et à partir de sources de confiance. Il n'y a aucun risque à simplement visualiser le texte. (Les en-têtes peuvent également inclure des fichiers système et définir des macros qui modifient la façon dont le code dépendant est compilé - pertinent pour les développeurs, mais pas une menace de sécurité provenant du fichier seul.)
Détails du format
en bref- En-tête Objective-C / Objective-C++ - L'Objective-C d'Apple utilise également des en-têtes .h (par exemple pour déclarer des classes @interface), ouverts de la même manière dans Xcode ou des éditeurs de texte.
- ch / diverses données d'application - Une poignée de programmes de niche (et d'anciens outils de jeux/données) réutilisent .h pour des données autres que du code source ; identifiez-les par le contenu du fichier, pas par l'extension.
Programmes qui ouvrent les fichiers H
Détails techniques
spécifications approfondies| Type de fichier | En-tête de code source en texte brut |
| Type MIME | text/x-c |
| Signature de fichier (octets magiques) | Aucune - texte brut, identifié par l'extension et le contenu |
| Construction d'ouverture typique | Garde d'inclusion (`#ifndef NAME_H` / `#define NAME_H`) ou `#pragma once` pour empêcher les inclusions multiples |
| Rôle du préprocesseur | Développé en ligne par le préprocesseur C avant la compilation ; les fichiers `.h` ne sont pas compilés directement |
| Syntaxe d'inclusion | Les en-têtes système utilisent des chevrons (ex: `<stdio.h>`) ; les en-têtes de projet utilisent des guillemets anglais (ex: `"mylib.h"`) |
| Contenu typique | Déclarations de fonctions, définitions de macros, définitions de structures et d'énumérations, alias typedef et (en C++) déclarations de classes |
| Extensions liées | `.c`, `.cpp`, `.hpp`, `.hxx`, `.hh`, `.cc`, `.cxx` |
| Liaison C++ | Les en-têtes C inclus dans du code C++ sont souvent enveloppés dans des blocs `extern "C" { }` pour empêcher la décoration de noms (name mangling) |
| Encodage des caractères | ASCII (norme historique) ; UTF-8 largement accepté par les compilateurs modernes pour les identifiants et les commentaires |
| Protection contre les inclusions multiples | Les gardes d'inclusion ou `#pragma once` garantissent que le même en-tête n'est traité qu'une seule fois par unité de traduction |
| En-têtes de la bibliothèque C standard | Suivent la convention `<nom.h>`, par exemple `<stdio.h>`, `<stdlib.h>`, `<string.h>` |
| Définitions de modèles (C++) | Les modèles de fonctions et de classes doivent être entièrement définis dans les fichiers d'en-tête car ils sont instanciés au moment de la compilation |
| Publié | 1972 (C language; #include header convention from early C) |
| Standard ouvert | Oui · libre de droits |
| Spécification | en.cppreference.com |
Conversions H
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers H.