[SDL] Uint8 * keystate = SDL_GetKeyState(NULL); //error: initializer element is not constant
Ostatnio zmodyfikowano 2011-05-03 13:44
unreal Temat założony przez niniejszego użytkownika |
[SDL] Uint8 * keystate = SDL_GetKeyState(NULL); //error: initializer element is not constant » 2011-05-03 13:17:14 #include <sdl/SDL.h> #include <stdbool.h> #include <stdint.h>
SDL_Surface * ekran = NULL; SDL_Surface * ludek = NULL; SDL_Event zdarzenie; SDL_Rect LudekDestination; Uint8 * keystate = SDL_GetKeyState( NULL ); int x; bool wyjscie = false; int main( int argc, char * args[] ) { ekran = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE ); ludek = SDL_LoadBMP( "bb.bmp" ); while( !wyjscie ) { while( SDL_PollEvent( & zdarzenie ) ) { if( zdarzenie.type == SDL_QUIT ) { wyjscie = true; } } if( keystate[ SDLK_RIGHT ] ) { x++; } LudekDestination.x = x; SDL_BlitSurface( ludek, NULL, ekran, & LudekDestination ); SDL_Flip( ekran ); } SDL_FreeSurface( ludek ); SDL_Quit(); return 0; }
wywala błąd: C:\Users\unreal\Desktop\sdl\a1\a1\main.c|10|error: initializer element is not constant| ||=== Build finished: 1 errors, 0 warnings ===|
Do linkera mam dołączone : libmingw32.a libSDLmain.a libSDL.dll.a Kompilator MingW. Proszę o pomoc. |
|
DejaVu |
» 2011-05-03 13:23:30 const Uint8 * keystate = SDL_GetKeyState( NULL );
|
|
unreal Temat założony przez niniejszego użytkownika |
» 2011-05-03 13:25:05 Dalej ten sam błąd. |
|
DejaVu |
» 2011-05-03 13:26:00 Bleh, sprawdzę - w8.
/edit:
#include <sdl/SDL.h>
SDL_Surface * ekran = NULL; SDL_Surface * ludek = NULL; SDL_Event zdarzenie; SDL_Rect LudekDestination; Uint8 * keystate = SDL_GetKeyState( NULL ); int x; bool wyjscie = false; int main( int argc, char * args[] ) { ekran = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE ); ludek = SDL_LoadBMP( "bb.bmp" ); while( !wyjscie ) { while( SDL_PollEvent( & zdarzenie ) ) { if( zdarzenie.type == SDL_QUIT ) { wyjscie = true; } } if( keystate[ SDLK_RIGHT ] ) { x++; } LudekDestination.x = x; SDL_BlitSurface( ludek, NULL, ekran, & LudekDestination ); SDL_Flip( ekran ); } SDL_FreeSurface( ludek ); SDL_Quit(); return 0; }
Mi się to kompiluje na visualu...
/edit:
Czy aby na pewno masz rozszerzenie pliku *.cpp (czyli używasz C++, a nie C?)
/edit2:
Używasz C - wynika z logów kompilacji. Jeżeli piszesz w C to krzywdę sobie robisz, ale zadziała:
Uint8 * keystate; keystate = SDL_GetKeyState( NULL );
|
|
unreal Temat założony przez niniejszego użytkownika |
» 2011-05-03 13:34:38 Ale ja używam Code::Block i MingW czyli gcc . Wiec to że na visualu się kompiluje to mnie nie ratuje :D Ale dzięki za zainteresowanie. //edit No właśnie że ja to w .c //edit2 Czemu sobie krzywdę robię? Nie zadziała :/ C:\Users\unreal\Desktop\sdl\a1\a1\main.c|11|warning: data definition has no type or storage class| C:\Users\unreal\Desktop\sdl\a1\a1\main.c|11|warning: type defaults to 'int' in declaration of 'keystate'| C:\Users\unreal\Desktop\sdl\a1\a1\main.c|11|error: conflicting types for 'keystate'| C:\Users\unreal\Desktop\sdl\a1\a1\main.c|10|note: previous declaration of 'keystate' was here| C:\Users\unreal\Desktop\sdl\a1\a1\main.c|11|warning: initialization makes integer from pointer without a cast| C:\Users\unreal\Desktop\sdl\a1\a1\main.c|11|error: initializer element is not constant| C:\Users\unreal\Desktop\sdl\a1\a1\main.c||In function 'SDL_main':| C:\Users\unreal\Desktop\sdl\a1\a1\main.c|27|error: subscripted value is neither array nor pointer| ||=== Build finished: 3 errors, 3 warnings ===|
|
|
DejaVu |
» 2011-05-03 13:40:43 Ponieważ później deklarujesz jeszcze zmienne. Najpierw się robi deklaracje w C, a później pisze kod. Nie można pisać jak w C++ tj. mieszać kodu z dodawaniem nowych zmiennych.
/edit:
A krzywdę robisz sobie dlatego, że odchodzi się od pisania w C ponieważ C++ ma większe możliwości, a można w razie czego pisać tak samo jak w C (z małymi wyjątkami gdzie C++ wymusza rzutowania). Ponadto masz większą kontrolę błędów w C++ aniżeli w C. |
|
unreal Temat założony przez niniejszego użytkownika |
» 2011-05-03 13:44:27 Ok zmieniłem na .cpp i działa jak powinno dzięki. |
|
« 1 » |