Указатель на функцию и соглашение о вызовах - PullRequest
17 голосов
/ 28 января 2011
float __stdcall (*pFunc)(float a, float b) = (float (__stdcall *)(float,float))0x411280;

Как объявить указатель на функцию с соглашением о вызовах? Вышесказанное дает мне ошибку.

Ответы [ 2 ]

37 голосов
/ 28 января 2011

Хитрость заключается в размещении __stdcall внутри скобок следующим образом:

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

Конечно, вам рекомендуется использовать typedef, но применяется тот же трюк:

typedef float (__stdcall *FuncType)(float a, float b);
0 голосов
/ 29 января 2011

__fastcall является оптимизированным (самое быстрое соглашение о вызовах), но не используется по неизвестной причине

Попробуйте:

int (__fastcall *myfunction)(int,float);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...