Hva er en H-fil?
En fil lagret med h-filtypen er en overskriftsfil som brukes i C/C++-filer for å inkludere deklarasjonen av variabler, konstanter og funksjoner. Disse henvises til av implementeringsfilene C++ som inneholder den faktiske implementeringen av disse funksjonene. En .h-headerfil kan også inneholde tilleggsinformasjon som makrodefinisjoner. Disse overskriftsfilene refereres til i C/C++-filene ved å bruke “#include”-direktivet.
Et nytt C++-prosjekt inneholder vanligvis en spesiell header-fil med navnet stdafx.h-fil som er utgangspunktet for alle kompileringskjeder og alle header-filene kan inkluderes i denne enkeltfilen. En .h-fil kan åpnes med hvilken som helst tekstredigerer, Eclipse IDE, Microsoft Visual Studio IDE, Borland C++ kompilator og mange andre applikasjoner.
.H Filformat
En .h-fil er en ren tekstfil som har sine egne regler for å definere syntaksen. Overskriftsfiler kan inneholde følgende informasjon.
Variables
- I tilfelle av objektorientert programmering (OOP), inneholder en klasseoverskriftsfil definisjoner av alle klassenivåvariabler som er tilgjengelige på tvers av implementeringskildekodefilene
Methods Declaration
- Alle metodeerklæringene er inkludert i .h-headerfilene for å være tilgjengelige på tvers av flere implementeringsfiler.
Non-Inline Function Definitions
- Overskriftsfiler kan også inneholde definisjoner av ikke-innebygde metoder.
Message Maps
- En overskriftsfil kan også inneholde meldingskart i tilfelle en MFC-kildekodeimplementering. I slike tilfeller er meldingskartene knyttet til funksjonalitetsimplementeringen som er knyttet til UI-elementer som knapp, avkrysningsboks, radioknapper, etc.
Header Guards
Header-filer kan føre til komplekse feil der flere erklæringer er inkludert i samme fil som et resultat av å legge til andre header-filer. Disse dupliserte definisjonene gir kompilatorfeil. Denne problematiske situasjonen kan unngås via en mekanisme kalt header guard som er betingede kompileringsdirektiver som vist nedenfor.
#ifndef ANY_UNIQUE_NAME_HERE
#define ANY_UNIQUE_NAME_HERE
// your declarations (and certain types of definitions) here
#endif
Med denne overskriften sjekker forprosessoren om ANY_UNIQUE_NAME_HERE
allerede er definert. Hvis overskriften gjentatte ganger inkluderes i den samme filen, vil innholdet i overskriften bli ignorert.
H File Example
// sample.h
#pragma once
#include <vector> // #include directive
#include <string>
namespace N // namespace declaration
{
inline namespace P
{
//...
}
enum class colors : short { red, blue, purple, azure };
const double PI = 3.14; // const and constexpr definitions
constexpr int MeaningOfLife{ 42 };
constexpr int get_meaning()
{
static_assert(MeaningOfLife == 42, "unexpected!"); // static_assert
return MeaningOfLife;
}
using vstr = std::vector<int>; // type alias
extern double d; // extern variable
#define LOG // macro definition
#ifdef LOG // conditional compilation directive
void print_to_log();
#endif
class my_class // regular class definition,
{ // but no non-inline function definitions
friend class other_class;
public:
void do_something(); // definition in my_class.cpp
inline void put_value(int i) { vals.push_back(i); } // inline OK
private:
vstr vals;
int i;
};
struct RGB
{
short r{ 0 }; // member initialization
short g{ 0 };
short b{ 0 };
};
template <typename T> // template definition
class value_store
{
public:
value_store<T>() = default;
void write_value(T val)
{
//... function definition OK in template
}
private:
std::vector<T> vals;
};
template <typename T> // template declaration
class value_widget;
}
Referanser
See Also
- INO-fil - Arduino Sketch - Hva er en .ino-fil og hvordan åpner jeg den?
- SMC-fil - Super Nintendo Game ROM - Hva er en .smc-fil og hvordan åpner jeg den?
- ENC-fil - kodet fil - Hva er en .enc-fil og hvordan åpner jeg den?
- ESX-fil - Xactimate Insurance Claims Estimate - Hva er en .esx-fil og hvordan åpner jeg den?
- NDS-fil - Nintendo DS Game ROM - Hva er en .nds-fil og hvordan åpner jeg den?