[QGHG-it-dev-list] Opšta pitanja

Dusan Cvijetic dusancvijetic2000 at gmail.com
Tue Mar 8 21:42:15 CET 2022


Pozdrav,

Otvaram ovaj thread jer mi se čini da bi bilo dobro da imamo sva pitanja
koja nisu vezana za neki konkretan zadatak na jednom mestu.

Ako se sećate, u početku sam imao problem što kod nije mogao da se prevodi
u Visual Studio-u, dok je sasvim dobro radio sa gcc. To je u međuvremenu
razrešeno, ali sada mi uopšte nije jasno kako se kod za triangulator bilo
gde prevodi.

Koliko mi je poznato, prevođenje se vrši iz tri faze: pretprocesor vrši
leksičku obradu, zatim se izdvajaju tokeni iz sirovog teksta, koje builder
koristi da bi kreirao .obj fajlove. Na kraju, linker prolazi kroz .obj
fajlove i povezuje deklaracije sa definicjama, ukoliko se nisu nalazile u
istom fajlu.

Stil programiranja sa kojim sam se do sad susreo je nalagao da u .hpp fajl
u kome koristim neko ime uključim .hpp fajl sa odgovarajućom deklaracijom.
Tako bih, recimo, morao da uključim colors.hpp direktno u classes.hpp, jer
je jedno od polja KSimplex-a lista boja koje ga opisuju. Kada uključim
colors.hpp na početku fajla, builder zna deklaraciju klase Color i nema
problema.

Međutim, mi to ne radimo, već sve deklaracije uključujemo u
triangulator.hpp, i zatim to dalje u main.cpp. Nije mi jasno kako builder
"zna" deklaraciju klase Color unutar fajla classes.hpp.

U knjizi (Milićev, 1995, str. 71) sam našao:

Zbog potpuno nezavisnog prevođenja jednog fajla (prevodilac "ne vidi" ništa
> drugo osim onoga što se nalazi u fajlu koji trenutno prevodi), svaki
> programski fajl treba da sadrži sve što je potrebno za uspešno prevođenje
> tog fajla. To znači da je potrebno da u svakom fajlu postoje odgovarajuće
> deklaracije svih imena koja se u fajlu koriste. Svako korišćenje imena bez
> prethodne deklaracije u fajlu prevodilac prijavljuje kao grešku. /.../
> Deklaracije imena navode se u svim fajlovima u kojima se ta imena koriste.
>

Prema gornjem teksu, očekivao bih da prevodilac baci grešku jer mu ime
klase Color nije definisano. Ipak, nešto ranije na istoj strani, prof.
Milićev je napisao i:

Prevodilac prevodi svaki programski fajl (skoro)* potpuno nezavisno*, ne
> znajući koji sve fajlovi čine program.
>

Pretpostavio sam da rešenje moje nejasnoće leži u ovome *(skoro)*, ali
nisam uspeo na internetu da nađem nikakve detalje koji bi mi razjasnili
kako radi prevodilac u VS.

Da li bi neko mogao da mi objasni zašto naš kod radi?

Pozdravi,
Dušan

(1) Milićev, D, *Objektno orijentisano programiranje na jeziku C++*,
Beograd, 1995.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ipb.ac.rs/pipermail/qghg-it-dev-list/attachments/20220308/936ae27a/attachment.htm>


More information about the QGHG-it-dev-list mailing list