[ snipe714 @ 22.02.2005. 01:32 ] @
Najbolje ce biti jasno sta je problem na primeru. Code: // boot.h #ifndef __BOOT_HEADER__ #define __BOOT_HEADER__ #include "global.h" namespace boot { /* ovde dodju klase koje koriste kod iz global.h */ /* .... */ } #endif Code: // global.h #ifndef __GLOBAL_HEADER__ #define __GLOBAL_HEADER__ #include "video.h" #include "josgomilatoga.h" namespace glob { /* ovde idu klase koje koriste video.h */ /* .... */ } #endif Code: // video.h #ifndef __VIDEO_HEADER__ #define __VIDEO_HEADER__ #include "boot.h" namespace video { /* ovde dodju klase koje koriste kod iz boot.h i ko zna jos odakle*/ /* .... */ } #endif Naravno, prevodilac (g++) se buni da se iz fajla video.h deklarisu neki tipovi koji nisu clanovi boot namespace-a (iz boot.h), jer boot.h u trenutku prevodjenja fajla video.h prakticno nije jos ni ucitan, vec samo onaj njegov deo do #include "global.h". Namerno sam ubacio ovaj global.h fajl, da bar malo docara kompleksnost, jer imam otprilike 15-ak razlicitih *.h fajlova u ovom projektu i vlada opsti haos po pitanju medjuzavisnosti. Rucno sredjivanje bi bilo veoma cupavo, a ustalom zanima me da li postoji neki finiji nacin da se ovo resi, npr. dobacivanjem posebnih opcija prevodiocu? Fazon je u tome da ce verovatno biti potrebno dodavati jos gomilu podmodula, tj. zasebnih celina, namespace-ova i zaglavlja, pa rucno ne bih bas da radim. Razmisljao sam da ubacim deklaraciju svih klasa koje se pojavljuju u datom zaglavlju PRE ovih #include poziva, a definicije posle njih. Da li bi ovo pomoglo i da li je uopste neophodno? Mora da postoji neki automatizovani nacin... |