Можно, но через приведение типа. Пример:
Код
#include <stdio.h>
void func1()
{
printf("func1\n");
}
int func2(int pVal)
{
printf("func2(%i)\n", pVal);
return pVal;
}
int main()
{
typedef void(*func1_type)();
typedef int(*func2_type)(int);
void* func_ptr;
printf("call1\n");
func_ptr = (void*)func1;
((func1_type)func_ptr)();
printf("call2\n");
func_ptr = (void*)func2;
((func2_type)func_ptr)(3);
printf("end\n");
return 0;
}
Вывод
Цитата
call1
func1
call2
func2(3)
end
-------------------
а если вам надо во время выполнения определять функцию какого типа вызвать, то лучше перейти на C++, там есть средства для этого.