it-swarm.com.de

In Funktionszeiger umwandeln?

Ich habe die folgende Codezeile gefunden: __ Ich denke, es kann eine Umwandlung in einen Funktionszeiger sein, der void zurückgibt und einen leeren Zeiger nimmt.

(void (*)(void *))SGENT_1_calc
24
Toby

Ja, das ist richtig. Ich finde das nicht sehr gut lesbar, daher empfehle ich, die Signatur der zu zeigenden Funktion zu erklären:

 typedef void sigrout_t(void*);

Ich habe auch die coding-Konvention, die Typen, die mit rout_t enden, solche Typen für Funktionssignaturen sind. Sie können es anders nennen, da _t ein Suffix reserved von Posix ist

letzteres auf Casting, um es vielleicht zu nennen

 ((sigrout_t*) SGENT_1_calc) (someptr);
34

Ja, die Funktion sollte so aussehen

void func(void*);

Aber der Aussage fehlt ein Ziel, da ein Abguss ins Nichts nutzlos ist. So sollte es sein

func = (void (*)(void *))SGENT_1_calc;
5
bash.d

ja, es ist ein Funktionszeiger, den Sie einer Funktion mit proto void funcname (void *) .__ zuweisen können. Hier kann der SGENT_1_calc direkt funcname zugewiesen werden

0
user2243395

Ja, es ist eine Besetzung, wie Sie gesagt haben.

0
Tony The Lion