(int (*) (void *, void *)) (numerisch? Numcmp: strcmp));Referenzieren von Funktionen mit Zeigern
numcmp und strcmp sind Funktionen mit zwei Argumenten.
Ich verstehe, was der bedingte Operator tut. Das ist einfach.
Ich kann meinen, dass dies zu nancmp (void *, void *) oder strcmp (void *, void *), aber ich verstehe nicht warum? Vor allem die: int (*), verwirrt mich.
Mögliches Duplikat von [Wie funktionieren Funktionszeiger in C?] (Http://stackoverflow.com/questions/840501/how-do-function-pointers-in-c-work) – Siguza
Fragen Sie, warum die Syntax ist es so (so komisch)? –
Randnotiz: Aufruf des resultierenden Zeigers ist UB. 'strcmp's Parameter sind nicht' void * ', noch sind' numcmp's (andernfalls würde die Bedingung nicht kompiliert werden). Natürlich ist das genau der Compiler-Fehler, den Sie bekommen, wenn Sie nicht mit dieser Besetzung den Mund halten. – Quentin