我有可变数目的两种功能和类型的参数函数指针在C具有不同参数的不同功能
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 (true == condition_1)
pfunc = my_func_one;
else if (true == 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 *',然后在调用时做适当的类型转换?尽管如此,你仍然放松了所有的安全类型。 –