Como fazer função genérica usando void * in c?
eu tenho umincr
função para incrementar o valor por1
Eu quero torná-lo genérico, porque eu não quero fazer funções diferentes para a mesma funcionalidade.
Suponha que eu queira incrementarint
,float
,char
por1
void incr(void *vp)
{
(*vp)++;
}
Mas o problema que eu conheço éDereferencing a void pointer is undefined behaviour
. Às vezes pode dar erro:Invalid use of void expression
.
Minhasmain
funciton é:
int main()
{
int i=5;
float f=5.6f;
char c='a';
incr(&i);
incr(&f);
incr(&c);
return 0;
}
O problema é como resolver isso? Existe uma maneira de resolvê-lo emC
só
ou
vou ter que definirincr()
para cada tipo de dados? se sim, então qual é o uso devoid *
O mesmo problema com oswap()
esort()
Eu quero trocar e classificar todos os tipos de dados com a mesma função.