【发布时间】:2013-05-22 03:55:27
【问题描述】:
我有两个函数,参数数量和类型可变
double my_func_one(double x, double a, double b, double c) { return x + a + b + c }
double my_func_two(double x, double p[], double c) { return x + p[0] + p[1] + c }
我想使用一个指向我上面定义的函数的函数的指针,基于某个条件变为真,例如
if (condition_1)
pfunc = my_func_one;
else if (condition_2)
pfunc = my_func_two;
// The function that will use the function I passed to it
swap_function(a, b, pfunc);
我的问题是,对于这种情况,我可以定义一个函数指针吗?如果是,怎么做?
我的理解是函数指针的原型对于所有可以指向的函数都应该是相同的。
typedef double (*pfunction)(int, int);
就我而言,它们并不相同。有没有其他方法可以做到这一点?
语言
我正在用 C 开发,我正在使用 gcc 4.4.3 编译器/链接器
【问题讨论】:
-
将函数指针设为
void *,然后在调用时进行正确的类型转换?但是,您会失去各种类型的安全性。
标签: c function-pointers