Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C函数点隐藏一些变量_C - Fatal编程技术网

C函数点隐藏一些变量

C函数点隐藏一些变量,c,C,当我做科学计算时,我通常会遇到一个场合,我想用不同的方法来解决我的问题。我认为函数指针对我来说是一个很好的工具。然而,这些方法通常有一些自己的参数,如阈值或其他。我可以用一个函数指针来指向它们吗?i、 我可以在C函数指针中隐藏一些参数吗?我知道fortran有替代变量,matlab也可以支持它。 例如: float method_a(float *mod, int N, double pa); float method_b(float *mod, int N, float pb1

当我做科学计算时,我通常会遇到一个场合,我想用不同的方法来解决我的问题。我认为函数指针对我来说是一个很好的工具。然而,这些方法通常有一些自己的参数,如阈值或其他。我可以用一个函数指针来指向它们吗?i、 我可以在C函数指针中隐藏一些参数吗?我知道fortran有替代变量,matlab也可以支持它。 例如:

    float method_a(float *mod, int N, double pa);
    float method_b(float *mod, int N, float pb1, char *pb2);

不是真的。C函数指针是一个地址加上一个原型,它描述了参数(在概念机器中)被推到堆栈上的过程。你不能轻易地从一个原型切换到另一个原型


您可以做的是在运行时在C函数指针之上构建自己的动态解析。另一个技巧是始终将void*传递给函数指针,该指针提供上下文。调用函数指针的函数从不检查此void*,只是将其传递。但您可以强制转换到自己的结构,并可能在某个位置打开一个值来调用可能的函数列表中的一个。

可能您可以传递一个函数指针,该指针接受结构指针(包含所有可能的参数)作为参数,并在函数实现中解码结构指针。您能确定以后如何调用该函数吗?