Giusto per aggiungere una terza versione, è possibile dichiarare il parametro della funzione come void *, ed effettuare poi un cast all'interno della funzione.
Questo metodo, che di per sé sembra assurdo, è in realtà obbligatorio quando si lavora, ad esempio, con la libreria pthread. Infatti funzioni come la pthread_create richiedono che tra i parametri gli si passi un puntatore a una funzione che ha un unico parametro di tipo void * e come tipo di ritorno sempre void *.