Kezdőoldal » Számítástechnika » Programozás » C++ nyelvben "include". Hogyan?

C++ nyelvben "include". Hogyan?

Figyelt kérdés

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?



2014. jan. 30. 17:47
1 2
 1/15 iostream ***** válasza:
2014. jan. 30. 18:00
Hasznos számodra ez a válasz?
 2/15 anonim ***** válasza:

#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".

2014. jan. 30. 18:03
Hasznos számodra ez a válasz?
 3/15 anonim ***** válasza:
100%

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")

2014. jan. 30. 18:34
Hasznos számodra ez a válasz?
 4/15 anonim ***** válasza:
100%
A #include makro C++-ban úgy működik, hogy mindent szolgaian bemásol a helyére a hivatkozott fájlból. Ahogy előző írta, ne a .cpp-t másold be, mert ez nem túl szép, hanem abból a "bemásolni kívánt" osztályhoz készíts headert, és csak azt. Egyébként úgy általánosságban: próbáld meg levedleni PHP-s berögzüléseket, sosem vezet jóra, ha A nyelvben B "nyelvül" akar valaki programozni.
2014. jan. 30. 21:36
Hasznos számodra ez a válasz?
 5/15 A kérdező kommentje:

köszönöm hogy ezt így leírtátok, de igazából nem értem teljesen.


Nincs valami példafájl/tutorial ehez?

2014. jan. 31. 12:31
 6/15 anonim ***** válasza:
2014. jan. 31. 12:38
Hasznos számodra ez a válasz?
 7/15 anonim ***** válasza:
100%

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.

:)

2014. jan. 31. 13:56
Hasznos számodra ez a válasz?
 8/15 anonim ***** válasza:

Hirtelen nem találtam ennél jobb ábrát:

[link]


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.

2014. jan. 31. 14:10
Hasznos számodra ez a válasz?
 9/15 iostream ***** válasza:
Komolyan nem értem, mit nem lehet ezen érteni. Az inklúd direktíva bemásolja a direktíva helyére a hivatkozott fájl tartalmát cakkumpakk.
2014. jan. 31. 15:45
Hasznos számodra ez a válasz?
 10/15 A kérdező kommentje:
köszönöm, kezdem érteni!
2014. febr. 1. 12:24
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!