[ #Coder @ 25.02.2004. 11:40 ] @
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... |
[ #Coder @ 25.02.2004. 11:40 ] @
[ filmil @ 25.02.2004. 12:08 ] @
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 Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|