Это должно работать, кастинг не требуется:
void f(int x) { printf("%d\n", x); }
int main(int argc, const char ** argv)
{
typedef void (*int_void)(int);
int_void test = f;
...
}
Имя функции «превращается» в указатель на функцию всякий раз, когда вы используете имя функции в чем-то отличном от вызова функции. Если is присваивается функциональному ptr того же типа, вам не требуется приведение.
Оригинал
typedef int_void(int);
само по себе бесполезно, без использования указателя на тип. Таким образом, ответ на ваш вопрос «нет, вы не можете использовать этот typedef без указателя».