typedef short (*callback_t)(void *, short); short Callback (void* Data, short Msg) { return 0; } short f(callback_t func, void* v, short s) { callback_t func2 = func; return (*func2) (v, s); } short g(void *v, short s) { return f(Callback, v, s); }