Это потому, что прототипы функций не совпадают:
void (*other_func)(void *a, int *b)
- это не то же самое, что:
int func2(int val1, int val2);
Один принимает void*
и int*
, в то время какдругой занимает два int
с.
РЕДАКТИРОВАТЬ:
Кроме того, тип возврата не совпадает.
РЕДАКТИРОВАТЬ 2:
Поскольку вы исправили обе ошибки, этот ответ находится вне контекста. Я только что проверил его с этими двумя исправлениями, и он компилируется:
int *my_func(int x, void (*other_func)(int a, int b)){
return 0;
}
void func2(int val1, int val2){
printf("blah");
}
int main(){
my_func(1,func2);
return 0;
}