gpt4 book ai didi

c - 使用 n 个参数运行函数

转载 作者:太空宇宙 更新时间:2023-11-04 05:42:23 25 4
gpt4 key购买 nike

我需要用原始 ANSI C (1989) 解决一个问题。

我有一些指针 (void *func) 可以使用 (int n) double 参数运行,并且有数组 double values[]n 数字。所以我想用位于值中的 n 参数运行我的函数。

例如我有函数:

double hypotenuse(double x, double y, double z);

所以

void *func = (void *)hypotenuse; double values[3] = {5, 4, 3}; int n = 3;

我想做这样的事情:

func(n, values);

问题是我不能改变函数的原型(prototype),所以我需要以某种方式执行此操作(也许是一些宏?)。

最佳答案

主要问题是您必须根据参数的数量(即根据 n 变量)以不同方式转换指针。

一种方法是使用包含参数编号的 switch 语句的包装函数:

double wrapper(void *func, double args[], int n)
{
switch (n)
{
case 0:
return ((double (*)(void)) func)();
case 1:
return ((double (*)(double)) func)(args[0]);
case 2:
return ((double (*)(double, double)) func)(args[0], args[1]);
case 3:
return ((double (*)(double, double, double)) func)(args[0], args[1], args[2]);
default:
printf("Error: wrapper called with %d arguments\n", n)
break;
}

return 0.0;
}

关于c - 使用 n 个参数运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14889917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com