当我进行科学计算时,我经常遇到一个场合,我想用不同的方法来解决我的问题。我认为函数指针对我来说是一个很好的工具。但是,这些方法通常有一些自己的参数,如阈值或其他。我可以使用函数指针指向它们吗?即我可以在C函数指针中隐藏一些参数吗?我知道fortran有替代变量,matlab也可以支持它。 例如:
float method_a(float *mod, int N, double pa);
float method_b(float *mod, int N, float pb1, char *pb2);
答案 0 :(得分:0)
不是真的。 C函数指针是一个地址加上一个原型,它描述了推入堆栈的(在名义机器中)它们的参数。你不能轻易地从一个原型切换到另一个原型。
您可以做的是在C函数指针的基础上在运行时构建自己的动态分辨率。另一个技巧是始终将void *传递给函数指针,该函数指针为其提供上下文。调用函数指针的函数永远不会检查此void *,只是通过它。但是你可以转换为你自己的结构,并可能在某处打开一个值来调用可能函数列表中的一个。