Mi sembra un metodo utile, in mancanza di strumenti più adeguati lato linguaggio.
Se sono un meccanismo che per alcuni versi facilitano la scrittura di funzioni con numero variabile di argomenti dall'altro hanno, derivata dalla stessa intrinseca implementazione di boopsi, una serie di "peculiarità" che a mio avviso sono strane. Non limitanti, ma strane.
Evitate l'uso dei variadic parameter, sono unsafe e non ottimizzabili. Ci sono alternative decisamente migliori
certo che puoi passare costanti, basta fare il casting (void *)5. Ma void * è utile SOLO per passare indirizzi, per parametri interi che siano lunghi quanto un indirizzo, usa size_t.Quasi sempre size_t è un typedef che rimanda a unsigned long.