Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Jako tezak problem (bar za mene)

[es] :: C/C++ programiranje :: Jako tezak problem (bar za mene)

[ Pregleda: 2388 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

#Coder
Zagreb

Član broj: 21075
Poruke: 16
193.198.202.*



Profil

icon Jako tezak problem (bar za mene)25.02.2004. u 11:40 - pre 245 meseci
Imam jedan seljacki problem...

Kako komad koda podjeliti na vise djelova

svaki dio ima svoj heder ali kako kod maina unjeti include "nekaj.h" a da mi on nadje u nekaj.cpp implementaciju...
Mess with the best and die like the rest
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Jako tezak problem (bar za mene)25.02.2004. u 12:08 - pre 245 meseci
Citat:
svaki dio ima svoj heder ali kako kod maina unjeti include
"nekaj.h" a da mi on nadje u nekaj.cpp implementaciju...


Kratak odgovor: nikako.

C i C++ pojma nemaju o deljenju koda. Jedino što se dešava jeste da kada
uključiš neki .h, kompajleru „obećaš“ da će se nekim čudom u krajnjem
kodu naći ta funkcija. Ti sam međutim moraš da obezbediš da se ta
funkcija zaista tamo i nađe.

Primer:

Code:

// Glavni
#include "datoteka.h"

int main (void)
{
zdravo();
return 0;
}

// datoteka.h
void zdravo(void);

// implementacija.cpp

void zdravo(void)
{
// neki kod
}


Programer je odgovoran za povezivanje datoteka u celinu. Dakle moram da
naložim kompajleru da prevede oba modula i da ih zatim prosledi linkeru
na povezivanje u celinu. Pretpostavljam ovde da se koristi GNU C++, ali
priča je manje više ista za sve kompajlere:

g++ -c -o glavni.o glavni.cpp # prevedi glavni.cpp u objektni kod
g++ -c -o implementacija.o implementacija.cpp # prevedi
implementacija.cpp u obj. kod
g++ -o program glavni.o implementacija.o # poveži obe datoteke u program

(YMMV)

Kao što vidiš, ti si sam odgovoran da u program uključiš sve potrebne
datoteke. IDE okruženja često sakrivaju ovaj posao od tvojih očiju i
stvari izgledaju manje-više automatski, ali to je samo privid: kompletno
upravljanje projektom se izvodi nezavisno od samog kompajlera.

Neki drugi jezici imaju ovaj mehanizam integrisan u sam kompajler, ali
kod C-a i derivata to tradicionalno nije slučaj. Ima mnogo alata koji
manje ili više automatizuju održavanje koda, kao što su (tradicionalno)
make i (malo manje tradicionalno) automake, autoconf, libtool. Moguće su
varijacije na temu ali priča je u glavnim crtama ispravna.

f
 
Odgovor na temu

[es] :: C/C++ programiranje :: Jako tezak problem (bar za mene)

[ Pregleda: 2388 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.