No fajn, takže problém je nasledovný:
Do .h súborov sa dávajú len dekláracie. Tzn. len popis toho, čo chceš používať. Prototypy finkcií (to máš správne) a popis štruktúr. A práve v tých štruktúrach máš bordel.
V Cčku sa štruktúry deklarujú takto
Kód:
typedef struct
{
...polozky...
} nazovTypu;
a neskôr vytvoríš premennú ako
Kód:
nazovTypu premenna;
Dá sa to robiť aj tak, ako si to urobila ty, ale to odporuje tomu, čo som písal vyššie (do .h len deklarácie - popis)
Premenné preto vytváraš až v .c súboroch. Ďalší zádrhel je, že sa snažíš zdieľať globálne premennné (lvl1, lvl2 a lvl3) cez viacero .c súborov. To sa potom robí tak, že do jedného .c súboru (level.c) napíšeš normálne
Kód:
level1 lvl1;
level2 lvl2;
level3 lvl3;
A do game.c potom
Kód:
extern level1 lvl1;
extern level2 lvl2;
extern level3 lvl3;
aby prekladač vedel, že má použiť premennú, ktorú už vytvoril inde.
Opravil som to, pozri sa na to
http://goo.gl/n4j8aĎalej máš trochu bordel v používaní štruktúry. Nie že by to nefungovalo, ale robíš to zbytočne zložito.
Totiž tebe stačí popísať jeden typ ako
Kód:
typedef struct{
char name[100];
char description[100];
char password[100];
char Map[100];
} level;
a potom si vytvoriť 3 premenné tohoto typu
Kód:
level lvl1;
level lvl2;
level lvl3;
Každá premenná tak dostane vlastný priestor, s ktorým bude pracovať. Takže sa môžeš odkazovať na lvl1.Map, lvl2.Map aj lvl3.Map. Toto sú tri rozdielne polia 100 charov.
Ak sa ti bude chcieť, môžeš to prerobiť, aj keď nemusíš. Len to ber na vedomie