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.