c函数根据调用者的决定返回一个值

时间:2015-02-28 12:45:08

标签: c generics

我试图了解泛型函数如何工作, 让它成为最简单的例子,如果我想要一个函数,返回max min - 根据用户的选择, 有可能这样做:

  void f(void* a, void* b, void *(comp)(void* a, void* b), void* result){
 ////does something////
 }

或者我必须发送一些密钥作为参数还是有另一种方法? 谢谢

1 个答案:

答案 0 :(得分:0)

像这样调用这个函数:

void* mincmpi (void* a, void* b) {
  return (*(int*)a < *(int*)b)? a: b;
}
//...
f (a, b, &mincmpi, res);

在某些时候f里面调用comp:

result = *comp (a, b);

当然可以。这种比较器的一种情况是对序列进行排序。您可以通过函数指针指定排序顺序。虽然我建议你不要使用void *,如果你真的没有。