0

我必须维护一段在 64k 机器上编译时无法正常工作的旧代码。

我有一个函数“solve”调用另一个函数“funct”作为指针传递:

int solve(double*x,double xA,double xB,double zeps,double funct(double x,double*),...)

因此,“solve”可以与不同的可能功能一起使用,例如:

double isDgood(double D,double*Y);

在函数“solve”中,可以调用函数“funct”并使用以下方法访问其参数:

fA=funct(xA,(double*)(&funct+1));"

虽然我不熟悉这种语法,但我猜开发人员假设未指定的参数只是被推入堆栈。但是,此代码不再适用于 64k 平台。如何更正此代码?我应该专门使用 Va_list 吗?

非常感谢您的帮助。

4

1 回答 1

2

这是可怕的未定义行为。如果你想访问参数,你将不得不传递它们。

于 2011-05-04T23:12:49.980 回答