Vad är filformatet H?
.h-filer skapas när man arbetar med språken C, C++ eller Objective-C.
Innehåll i .h-filer
Filer med filtillägget .h innehåller funktions-deklarationer eller makron, och kan innehålla data som:
- variabel- och konstantdeklarationer,
- definitioner av struct, enum och typer,
#include-referenser till andra header-filer
I praktiken används .h-filer för att hålla delade deklarationer - kod som refereras ofta i flera .c och .cpp källkodsfiler. Detta möjliggör bättre läsbarhet av källkoden och effektivitet för programmeraren. Funktioner och makron definierade i .h-filer gör dem återanvändbara mellan projekt och underlättar koddelning. Detta gör det också enklare att uppdatera koden, eftersom gränssnittet lagras på en enda, välkänd plats.
Hur används .h-filer?
Genom att lagra delade deklarationer i .h-filer blir de lättare att komma åt och lägga till i projektets källkod. Under kompileringen expanderar C-preprocessorn varje #include-direktiv och kopierar headerns innehåll till översättningsenheten innan kompilatorn fortsätter. System-headers som <stdio.h> eller <vector> levereras med kompilatorn och behöver inte distribueras med ditt projekt; projektspecifika .h-filer är däremot en del av källkodsträdet och följer med det. Många C++-projekt använder också .hpp-filer för att skilja C++-specifika headers från vanliga C-headers i .h, även om båda förlitar sig på samma #include-mekanism.
Säkerhet & trygghet
RISK: LOWEn .h-header är källkod i klartext och körs inte av sig själv, så det är säkert att öppna eller läsa en i en redigerare. Den faktiska varningen gäller KOMPILERING, inte filformatet: header- (och käll-) kod från ett okänt projekt kan innehålla skadlig logik som bara körs när du bygger och kör programmet, så granska och bygg okänd C/C++-kod endast i en sandbox/VM och från källor du litar på. Det finns ingen risk med att bara titta på texten. (Headers kan också göra #include på systemfiler och definiera makron som ändrar hur beroende kod kompileras - relevant för utvecklare, inte ett säkerhetshot från filen i sig.)
Formatdetaljer
i ett nötskal- Objective-C / Objective-C++ header - Apples Objective-C använder också .h-headers (t.ex. för att deklarera @interface-klasser), som öppnas på samma sätt i Xcode/textredigerare.
- ch / diverse app-data - Ett fåtal nischade program (och gamla spel/dataverktyg) återanvänder .h för data som inte är källkod; identifiera dessa genom filens innehåll, inte filtillägget.
Program som öppnar H-filer
Tekniska detaljer
djup specifikation| Filtyp | Header-fil för källkod i klartext |
| MIME-typ | text/x-c |
| Filsignatur (magic bytes) | Ingen - klartext, identifieras via filtillägg och innehåll |
| Typisk öppningskonstruktion | Include guard (`#ifndef NAME_H` / `#define NAME_H`) eller `#pragma once` för att förhindra dubbel inkludering |
| Preprocessorns roll | Expanderas inline av C-preprocessorn före kompilering; `.h`-filer kompileras inte direkt |
| Include-syntax | System-headers använder vinkelparenteser (t.ex. `<stdio.h>`); projektheaders använder citattecken (t.ex. `"mylib.h"`) |
| Typiskt innehåll | Funktionsdeklarationer, makrodefinitioner, struct- och enum-definitioner, typedef-alias och (i C++) klassdeklarationer |
| Relaterade filtillägg | `.c`, `.cpp`, `.hpp`, `.hxx`, `.hh`, `.cc`, `.cxx` |
| C++-länkning | C-headers som inkluderas i C++-kod omsluts ofta av `extern "C" { }`-block för att förhindra «name mangling» |
| Teckenkodning | ASCII (historisk norm); UTF-8 är allmänt accepterat av moderna kompilatorer för identifierare och kommentarer |
| Skydd mot dubbel inkludering | Include guards eller `#pragma once` säkerställer att samma header endast bearbetas en gång per översättningsenhet |
| Standard C-biblioteksheaders | Följer konventionen `<namn.h>`, t.ex. `<stdio.h>`, `<stdlib.h>`, `<string.h>` |
| Malldefinitioner (C++) | Funktions- och klassmallar (templates) måste definieras helt i header-filer eftersom de instansieras vid kompilering |
| Släppt | 1972 (C language; #include header convention from early C) |
| Öppen standard | Ja · royaltyfri |
| Specifikation | en.cppreference.com |
H-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om H-filer.