C++ nyelvben "include". Hogyan?
Sziasztok, nemrég elkezdtünk programozni a suliban.
Én már régebben elkezdtem PHP nyelven programozni, és ott volt olyan lehetőség hogy ha egy fájl több nagyobb részből áll akkor több php fájlt csinálok és az egészet belerakom egybe, mert így jobban átlátható.
C++-ban viszont nem tudom hogyan kell, azt tudom hogy van "#include <>" parancs de nem tudom hogyan működik.
tehát pl van egy "fo.cpp" és ebből be akarom include-olni az "a_resz.cpp"-t és a "b_resz.cpp"-t
MIT kell hozzá tennem?
#include "a_resz.cpp"
#include "b_resz.cpp"
De igazából ezt így nem szokás / nem illik (bár megtehető). A két forrás fájlt külön illik lefordítani és egybelinkelni, és csak a hozzájuk tartozó header fájlokat illik "includolni".
Csinálsz egy b_resz header filet.(b_resz.h)
Itt definiálod az osztály és a metódusokat.
Utána létrehozol egy b_resz.cpp-t és itt megvalósítod az osztályokat, valamint itt include-olod a b_resz.h-t(#include "b_resz.h")
Utána a main-ben pedig incude-olod a b_resz.h-t (#include "b_resz.h")
köszönöm hogy ezt így leírtátok, de igazából nem értem teljesen.
Nincs valami példafájl/tutorial ehez?
Pl:
************************
************ add.cpp
int add(int a, int b) { return a+b; }
************ add.h
int add(int a, int b);
************ main.cpp
#include <iostream>
#include "add.h"
int main() {
_cout << add(2,3);
_return 0;
}
************************
Az add.cpp fájlban egy függvény (vagy osztály) definíciója, tehát a megavalósítása (implemetációja) van. Ez külön kerül lefordításra tárgykóddá.
Az add.h header fájlban csak a deklarációja, tehát nincs benne a függvény törzse, csak az infók arról, hogy hogyan kell meghívni.
A main.cpp-be beemeljük (include) a header fájlt, mert lejjebb használni fogjuk az add függvényt. Ide a fordító egy függvényhívást fog fordítani, amihez tudnia kell, hogy kell hívni, ezért kell hozzá a headerben lévő deklaráció. De hogy mit csinál, az itt nem érdekes. A main.cpp is külön lefordul tárgykóddá, de a benne lévő hívás címe még nincs "kitöltve", csak egy szimbólum jelzi, hogy valami add nevű függvényre vonatkozik.
A végén a két tárgykódot a linker fogja összeszerkeszteni. Összerakja a két tárgykódot egy exe fájlba, és a benne lévő hivatkozásokat feloldja, tehát pl. az add függvényhíváshoz már tud konkrét címet tenni, mert itt már látja, hogy a másik tárgykódban lévő függvény milyen címre került.
A fordítás (compile) és szerkesztés (link) általában egy menetben megtörténik, a programozó gyakran nem is látja külön a folyamatot. De a háttérben így működik a dolog.
:)
Hirtelen nem találtam ennél jobb ábrát:
A .c (vagy .cpp) fájlokból először tárgykódok (.o, object) fájlok lesznek, és a linker szerkeszti exe-vé.
Egyébként mikor pl. az iostream-et használod, akkor is egy iostream könyvtárban (library) lévő tárgykódot vesz elő a szerkesztő, és azt is az exe-hez szerkeszti. Azért kell az #include<iostream>, vagyis a hozzá tartozó header, hogy tudja a fordító, milyen hívási kódot kell belefordítania pl. a cout-nál, és milyen visszatérési értéket fog majd kapni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, 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!