В следующих строках кода, что делает звездочка перед функциями dup_func, free_func и clear_free?
void *(*dup_func)(void *); void (*free_func)(void *); void (*clear_free_func)(void *);
В ваших примерах это означает, что они указатели на функции .
В двух словах, они позволяют вам делать такие вещи:
void example() { printf("Example called!\n"); } void call_my_function(void (*fun)()) { printf("Calling some function\n"); (*fun)(); } /* Later. */ call_my_function(example);