Так должно быть typedef void(void_from_int_t)(int); и т. д. Декларация следует за использованием, спиральное правило, или как там у вас любимая мнемоника.
2
Другие решения
В общем, чтобы создать определение типа, просто добавьте typedef к определению переменной:
// array of ten integers, instance and type
int a[10];
typedef int a_t[10];
// function, declaration and type
void function(int);
typedef void function_t(int);
Обратите внимание, что это тип функции, а не тип указателя на функцию, который вы получите, добавив звездочку: