Wie erstelle ich eine generische Funktion mit void * in c?
ich habe einincr
Funktion zum Erhöhen des Wertes um1
Ich möchte es generisch machen, weil ich nicht verschiedene Funktionen für die gleiche Funktionalität machen möchte.
Angenommen, ich möchte inkrementierenint
,float
,char
durch1
void incr(void *vp)
{
(*vp)++;
}
Aber das Problem, das ich kenne, istDereferencing a void pointer is undefined behaviour
. Manchmal kann es zu Fehlern kommen:Invalid use of void expression
.
Meinemain
Funktion ist:
int main()
{
int i=5;
float f=5.6f;
char c='a';
incr(&i);
incr(&f);
incr(&c);
return 0;
}
Das Problem ist, wie man das löst? Gibt es eine Möglichkeit, das Problem zu lösen?C
nur
oder
muss ich definierenincr()
für jeden datentyp? wenn ja, wovon nützt das?void *
Gleiches Problem mit demswap()
undsort()
Ich möchte alle Arten von Datentypen mit derselben Funktion austauschen und sortieren.