Вам нужно лучше определить указатель функции , взятый в качестве параметра и тип возвращаемого значения.
В любом случае, вот пример с простой функцией.
#include <stdio.h>
#include <stdlib.h> /* abs */
typedef int fx(int);
/* foo takes a function pointer and returns a function pointer */
fx *foo(fx *bar) {
if (bar) return bar;
return NULL;
}
int main(void) {
fx *(*signature)(fx *) = foo; /* signature points to foo */
if (signature(abs)) printf("ok\n");
return 0;
}