Mi a szerepük a programozásban a header fájloknak?





A külső függvénykönyvtárakban definiált függvényeken ezek révén tudod használni a programban.
Benne vannak a függvények, a paraméterezésükkel. A fordító ebből "tudja", hogy helyesen használod őket.
Ugyanis a fordításkor a forrásfájlokból object kódok keletkeznek előbb, ezeket később, a linker fűzi össze egy futtatható fájllá. -> A fordító nem tud a többi forráskód állományról, a .h fájlok biztosítják a helyes működést.
Ne túl szakszerűen de ez a lényeg kb.





Ahogy az első mondja. A C/C++ fordítási modell olyan, hogy fordítási egységekben gondolkodik. Ezek általában a .c/.cpp fájlok. Ha ebben használni akarsz egy osztályt vagy egy függvényt, amit nem a cpp-ben vezettél be, akkor vagy ki kell írnod a cpp-ben is a deklarációját, vagy be kell húznod valahonnan. Az #include semmi mást nem csinál, minthogy fogja a fájlt, és bemásolja az #include sor helyére a tartalmát.
Tehát:
van egy a.cpp-d, amiben van egy void a(); függvényed. A b.cpp-ben szeretnéd meghívni ezt az a függvényt. Ekkor két lehetőséged van, vagy beírod a b.cpp-be a hívás elé valahova, hogy void a();, vagy behúzod az a.hpp-t, ahova ugyanez van írva. Ekvivalens a két megoldás jelen esetben, hiszen mint említettem, az include is csak ennyit csinál. A lényeges rész akkor van, ha többen is használnák az a() függvényt. Ekkor ha változik pl az a deklarációja, mondjuk int a() lesz, akkor elég csak a headerben átírni, és minden cpp onnantól int-ként látja, míg fordítva ha valahol elfelejted átírni, linker hiba lesz.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!