def f(obj, int i, float f, char *s1, char s2[]): pass cdef g(obj, int i, float f, char *s1, char s2[]): pass cdef do_g(object (*func)(object, int, float, char*, char*)): return func(1, 2, 3.14159, "a", "b") do_g(&g)