旧代码:将函数的访问参数作为参数传递给另一个函数

Old code : access arguments of a function passed as an argument to another function?

本文关键字:函数 参数传递 另一个 参数 访问 代码      更新时间:2023-10-16

我必须维护一段在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吗?

非常感谢您的帮助

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