(int ( * ) (void*, void*))(numeric ? numcmp : strcmp));
numcmp 和 strcmp 是带有两个参数的函数。
我明白条件运算符在做什么。这很简单。
我可以推断这将计算为 numcmp(void*, void*) 或 strcmp(void*, void*),但我不明白为什么?特别是: int (*),让我感到困惑。
最佳答案
表达式 (int ( * ) (void*, void*))
只是一个函数指针的转换,带有两个返回 int 的
。对于其他转换,语法类似于没有变量名的变量声明。然后根据 bool 开关决定要转换的函数。void*
参数
关于c - 用指针引用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44091489/