"einfache" frage zu extern



  • Hallo

    ich habe folgendes Problem:

    in der main habe ich ein

    SDL_Surface *screen; stehen // und das global
    in einer anderen datei habe ich

    extern screen nach der include stehen

    jetzt muesste er die variable ja kennen und ich könnte diese benutzen

    doch

    es kommt bei folgender Funtktion

    SDL_BlitSurface(texture, NULL, screen, &m_field.rect);

    folgender fehler

    k:\Visual Studio Net\sdltest\sdlTest\FieldMatrix.cpp(58): error C2664: 'SDL_UpperBlit' : Konvertierung des Parameters 3 von 'int' in 'SDL_Surface *' nicht möglich

    Das Problem ist, in der mein kann ich SDL_BlitSurface ganz normal aufrufen und es geht.

    Hier ist ja der 3te Parameter nicht in Ordnung. Das screen ist ja anscheinend ein int, wenn ich mir dem "Mauszeiger" draufgehe wird als Tooltipp
    SDL_Surface *screen angezeigt. ist also kein int.

    Ich programmiere unter .NET ein visual c++ konsolenprogramm ( mit SDL )

    Da die Frage ja nicht direkt mit SDL zu tun hat, sondern wahrscheinlich allgem. Natur ist( wegen globalen variablen deklarieren ), poste ich es hier rein.



  • achja
    warum erscheint eigentlich

    SDL_UpperBlit
    ich habe doch
    SDL_BlitSurface benutzt.
    UpperBlit find ich in der SDL Doku auch nicht
    ( ok die Frage gehört aber wirklich ins Spieleforum 😞 )



  • Steht hinter der include wirklich nur

    extern screen;
    

    ??

    Das muss nämlich

    extern SDL_Surface *screen;
    

    heißen, denn der Compiler kann den Typ ja nicht erraten.

    Also, wenn da nur extern screen steht, kann das ja schonmal nicht gehen, weil man bei der Deklaration den Typ angeben muss. Daher kommt wahrscheinlich auch der Konvertierungsfehler, weil der Compiler den Typ als int annimmt (Kein c++ standard, aber der Microsoft-Compiler nimmt das nicht so genau 😃 )

    Felix


Anmelden zum Antworten