Was ist das H-Dateiformat?
.h-Dateien werden beim Arbeiten mit den Sprachen C, C++ oder Objective-C erstellt.
Inhalt von .h-Dateien
Dateien mit der Erweiterung .h enthalten Funktionsdeklarationen oder Makros und können folgende Daten enthalten:
- Variablen- und Konstantendeklarationen,
- Struct-, Enum- und Typdefinitionen,
#include-Verweise auf andere Headerdateien
In der Praxis werden .h-Dateien verwendet, um gemeinsam genutzte Deklarationen zu speichern - Code, der häufig in mehreren .c- und .cpp-Quelldateien referenziert wird. Dies ermöglicht eine bessere Lesbarkeit des Quellcodes und höhere Entwicklereffizienz. In .h-Dateien definierte Funktionen und Makros machen sie projektübergreifend wiederverwendbar und erleichtern die gemeinsame Nutzung von Code. Außerdem vereinfacht es die Pflege des Codes, da die Schnittstelle an einer einzigen, bekannten Stelle gespeichert ist.
Wie werden .h-Dateien verwendet?
Das Speichern gemeinsamer Deklarationen in .h-Dateien erleichtert den Zugriff und die Einbindung in den Projektquellcode. Während der Kompilierung erweitert der C-Präprozessor jede #include-Direktive und kopiert den Inhalt des Headers in die Übersetzungseinheit, bevor der Compiler fortfährt. System-Header wie <stdio.h> oder <vector> werden mit dem Compiler ausgeliefert und müssen nicht mit dem Projekt verteilt werden; projektspezifische .h-Dateien hingegen sind Teil des Quellbaums und werden mit diesem weitergegeben. Viele C++-Projekte verwenden auch .hpp-Dateien, um reine C++-Header von einfachen C-.h-Headern zu unterscheiden, obwohl beide denselben #include-Mechanismus nutzen.
Sicherheit
RISIKO: LOWEine .h-Headerdatei ist reiner Textquellcode und wird nicht von selbst ausgeführt; das Öffnen oder Lesen in einem Editor ist daher sicher. Die eigentliche Vorsicht gilt dem KOMPILIEREN, nicht dem Dateiformat: Header- (und Quell-)Code aus einem nicht vertrauenswürdigen Projekt kann bösartige Logik enthalten, die erst nach dem Erstellen und Ausführen des Programms aktiv wird. Überprüfen und bauen Sie daher unbekannten C/C++-Code nur in einer Sandbox/VM und aus vertrauenswürdigen Quellen. Das bloße Betrachten des Textes birgt kein Risiko. (Header können auch Systemdateien per #include einbinden und Makros definieren, die das Kompilieren abhängigen Codes beeinflussen - für Entwickler relevant, aber keine Sicherheitsbedrohung durch die Datei allein.)
Formatdetails
kurz gefasst- Objective-C / Objective-C++ header - Apples Objective-C verwendet ebenfalls .h-Header (z. B. zur Deklaration von @interface-Klassen), die auf dieselbe Weise in Xcode/Texteditoren geöffnet werden.
- ch / various app data - Einige Nischenprogramme (und ältere Spiel-/Datenwerkzeuge) verwenden .h für Nicht-Quellcode-Daten; identifizieren Sie diese anhand des Dateiinhalts, nicht der Erweiterung.
Programme zum Öffnen von H-Dateien
Technische Details
technische Spezifikation| Dateityp | Nur-Text-Quellcode-Header |
| MIME-Typ | text/x-c |
| Dateisignatur (Magic Bytes) | Keine - reiner Text, identifiziert durch Erweiterung und Inhalt |
| Typisches Eröffnungskonstrukt | Include-Guard (`#ifndef NAME_H` / `#define NAME_H`) oder `#pragma once` zum Verhindern mehrfacher Einbindung |
| Präprozessor-Rolle | Wird vom C-Präprozessor vor der Kompilierung inline expandiert; `.h`-Dateien werden nicht direkt kompiliert |
| Include-Syntax | System-Header verwenden spitze Klammern (z. B. `<stdio.h>`); Projekt-Header verwenden Anführungszeichen (z. B. `"mylib.h"`) |
| Typischer Inhalt | Funktionsdeklarationen, Makrodefinitionen, Struct- und Enum-Definitionen, typedef-Aliase und (in C++) Klassendeklarationen |
| Verwandte Erweiterungen | `.c`, `.cpp`, `.hpp`, `.hxx`, `.hh`, `.cc`, `.cxx` |
| C++-Verknüpfung | In C++-Code eingebundene C-Header werden häufig in `extern "C" { }`-Blöcke eingeschlossen, um Name Mangling zu verhindern |
| Zeichenkodierung | ASCII (historische Norm); UTF-8 wird von modernen Compilern für Bezeichner und Kommentare weitgehend akzeptiert |
| Mehrfacheinbindungsschutz | Include-Guards oder `#pragma once` stellen sicher, dass derselbe Header pro Übersetzungseinheit nur einmal verarbeitet wird |
| Standard-C-Bibliotheks-Header | Folgen der `<name.h>`-Konvention, z. B. `<stdio.h>`, `<stdlib.h>`, `<string.h>` |
| Template-Definitionen (C++) | Funktions- und Klassen-Templates müssen vollständig in Headerdateien definiert werden, da sie zur Kompilierzeit instanziiert werden |
| Veröffentlicht | 1972 (C language; #include header convention from early C) |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | en.cppreference.com |
H-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu H-Dateien.