Мое предложение - всегда пытайтесь разбить объявления на более мелкие - в этом случае код будет более читабельным.В этом случае вы можете переписать код следующим образом:
typedef struct {} my_struct;
typedef void (* m_op_function)(my_struct * v, void * arg);
int * my_func(my_struct * m, m_op_function f);
И, как все говорили, здесь почти 99,99% опечаток в отношении второго параметра m_op_function - это возможно void*
- так что вы можетепередать любой указатель на него - будь то (char*), (int*), (my_struct*)
или что-нибудь еще.Просто наведите указатель.