// boot.h
#ifndef __BOOT_HEADER__
#define __BOOT_HEADER__
#include "global.h"
namespace boot {
/* ovde dodju klase koje koriste kod iz global.h */
/* .... */
}
#endif
// global.h
#ifndef __GLOBAL_HEADER__
#define __GLOBAL_HEADER__
#include "video.h"
#include "josgomilatoga.h"
namespace glob {
/* ovde idu klase koje koriste video.h */
/* .... */
}
#endif
// 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...
fight the war... fuck the norm!