2011-01-28 8 views
12
float __stdcall (*pFunc)(float a, float b) = (float (__stdcall *)(float,float))0x411280; 

¿Cómo declarar un puntero de función con una convención de llamada? Lo anterior me da un error.Puntero de función y convención de llamadas

+1

¿Cuál es el mensaje de error? – James

Respuesta

29

El truco es colocar el __stdcall dentro de los paréntesis así:

float (__stdcall *pFunc)(float a, float b) = (float (__stdcall *)(float,float))0x411280; 

Por supuesto, se recomienda utilizar un typedef lugar, sino que se aplica el mismo truco:

typedef float (__stdcall *FuncType)(float a, float b); 
+0

Si pudiera votar dos veces, lo haría. ¡Muchas gracias! –

+2

Corrígeme si estoy equivocado, pero ¿no queremos que 'typedef' **' float' ** '(__stdcall * FuncType) (float a, float b)'? – zeboidlund

-1

__fastcall es el optimizado (convención de llamadas más rápidas) pero no se usa por una razón desconocida

Probar:

int (__fastcall *myfunction)(int,float); 
Cuestiones relacionadas