typedef Verständnis Problem - Hilfe



  • Hallo,
    könnte mir jemand den folgenden typedef erklären?

    typedef HRESULT (__stdcall * URLDownloadToFile_P)(LPUNKNOWN, LPCTSTR, LPCTSTR, DWORD, LPBINDSTATUSCALLBACK);
    

    Verstehe diese Klammer nicht:

    (__stdcall * URLDownloadToFile_P)
    

    Nemme mal an das ist ein Cast oder?



  • Hi,
    das ist kein Cast, so werden Funktionszeigertypen definiert.
    Das __stdcall Dingen gibt dabei die Aufrufkonvention an.

    Der Code macht es vllt. deutlicher:

    int (*funktionszeiger)( int i, double d ); // Deklaration eines Funktionszeigers.
    
    typedef int (*my_func_pointer_type)( int i, double d ); // Definition eines neuen Typs.
    
    int func ( int abc, double def )
    {
    	printf ( "func: %d %lf\n", abc, def );
    	return 0;
    }
    
    int main()
    {
    
    	int x = 123, y = 456;
    	my_func_pointer_type ptr = func; // Funktionszeigertyp.
    	funktionszeiger = func; // Funktionszeiger.
    	funktionszeiger(x, y); // Aufruf mit dem Funktionszeiger.
    	ptr(x,y); // Aufruf mit dem Typen.
    

    Gruß,
    B.B.



  • Die Variablennamen lässt man meistens weg:

    int (*funktionszeiger)( int, double ); // Deklaration eines Funktionszeigers.
    typedef int (*my_func_pointer_type)( int, double ); // Definition eines neuen Typs.
    

Anmelden zum Antworten