2 sdl\maps.cpp In file included from maps.cpp
4 sdl\maps.h expected constructor, destructor, or type conversion before '*' token
4 sdl\maps.h expected `,' or `;' before '*' token
6 sdl\maps.cpp expected constructor, destructor, or type conversion before '*' token
6 sdl\maps.cpp expected `,' or `;' before '*' token
sdl\Makefile.win [Build Error] [maps.o] Error 1
4 sdl\maps.cpp In file included from maps.cpp
11 sdl\maps.h expected init-declarator before '*' token
11 sdl\maps.h expected `,' or `;' before '*' token
sdl\maps.cpp In function `void showMap()':
30 sdl\maps.cpp `backgroundSurf' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
maps.cpp ostava v podstate rovnaky, maps.h sa zmenil na
V hlavičkovom súbore má byť len deklarácia (a teda tam nebudeš do tej premennej priraďovať NULL), navyše to vyzerá tak, že tú premennú backgroundSurf nemáš nikde nadefinovanú.
chybove hlasky musis brat od zaciatku lebo prekladac sa pokusa domysliet si casti kodu aby mohol pokracovat v preklade.
takze prva vec je na riadku 11:
11 sdl\maps.h expected init-declarator before '*' token // za touto hlaskou sa skryva "neviem co je to pred hviezdickou, predpokladam ze je to premenna ale neviem aky typ"
s toho vyplyva ze ti chyba include ktory ti definuje SDL_Surface,
kvoli tomu nie je definovana ani premenna backgroundSurf pouzita na riadku 30
Keď pri tých premenných nemáš extern, tak sa ti tá premenná nadefinuje v každom súbore, v ktorom máš include toho súboru maps.h.
Keď tam máš to extern, tak sa automaticky nenadefinuje nikde, to musíš urobiť ty. A teda, do niektorého cpp súboru (do toho, ku ktorému tie dáta logicky patria) dáš ešte definíciu tých premenných (a teda verziu bez extern).