Deklaration von Struktur



  • hallo

    ich habe hier einen pascal code, den ich in c++ übersetzen muss. klappte bis jetzt auch ganz gut, bis ich auf eine deklaration gestoßen bin, die ich absolut nicht interpretieren kann. hab schon im netz und ich büchern geschaut. ergebnis = nichts

    folgendes steht in pascal:

    TYPE Proc = PROCEDURE;
    

    und in einer Funktion in Pascal wird dann das gemacht:

    DoThis(InitK : Proc)
    

    Also ich weiß echt nicht, wie wo was und warum. Ich könnte mir vorstellen, dass ich das in c++ irgendwie in eine Struktur packen muss, aber was steht dahinter?



  • Könnte das ein Funktionspointer (bzw. Prozedurpointer) sein? Kriegst du raus, wenn du guckst, mit welchem Argument diese Funktion aufgerufen wird.

    In C++ etwa so:

    // den Typ Proc als Funktionszeiger definieren
    // (nicht unbedingt notwendig, aber um die Konstellation in dem
    // Pascal-Programm widerzuspiegeln)
    typedef void (*Proc)(); // bzw. anders, die Signatur muss mit dem Argument übereinstimmen
    
    // Deklaration von DoThis
    void DoThis(Proc p);
    
    // irgendeine Funktion, deren Signatur mit dem Typ Proc übereinstimmt
    // (war oben als void-Funktion ohne Argumente definiert)
    void foobar();
    
    // DoThis aufrufen und die Adresse von foobar übergeben
    DoThis(foobar);
    

    EDIT: Erläuterungen hinzugefügt



  • ja genau

    das ist ein Zeiger auf eine aktuelle Prozedur

    krieg ich sowas im C++ auch hin?



  • das hat Bashar dir doch geschrieben!


Anmelden zum Antworten