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 einen typedef 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++


Anmelden zum Antworten