Typenumwandlung will nicht.
-
Diese Programm scheitert, bei
app = (AppContext) appstate;
// g++ main.c -o main #include <stdio.h> struct AppContext { int blublu; } appContext; void SDL_AppInit(void** appstate) { appContext.blublu = 8888; *appstate = &appContext; } void SDL_AppEvent(void *appstate) { struct AppContext app; app = (AppContext) appstate; // geht nicht ! printf("blublu: %i\n", app.blublu); } int main(){ void *p; SDL_AppInit(&p); SDL_AppEvent(p); }
Fehler:
gcc main.c struct_test.c: In function ‘SDL_AppEvent’: struct_test.c:16:12: error: ‘AppContext’ undeclared (first use in this function) 16 | app = (AppContext) appstate; // geht nicht ! | ^~~~~~~~~~ struct_test.c:16:12: note: each undeclared identifier is reported only once for each function it appears in struct_test.c:16:23: error: expected ‘;’ before ‘appstate’ 16 | app = (AppContext) appstate; // geht nicht ! | ^~~~~~~~~ | ;
Ich vermute mal es ist ein sehr kleiner Fehler ?
Ein C-Profi kann sicher helfen.
-
In C mußt du wie in Zeile 15 immer
struct
noch dazu schreiben (außer du hast einentypedef
dafür erzeugt).
Außerdem ist die Rückumwandlung bei dir falsch.
-
Danke, jetzt klappts.
struct AppContext *app = appstate;
Ich hatte hier abgeguckt. https://stackoverflow.com/questions/62082474/how-to-send-user-data-with-gtk-signals-in-loop
Anscheinend ist dies C++