我必须维护一段旧代码,它在 64k 机器上编译时不再正常工作。
我有一个函数“solve”调用另一个作为指针传递的函数“funct”:
int solve(double*x,double xA,double xB,double zeps,double funct(double x,double*),...)
因此,“解决”可以与不同的可能函数一起使用,例如:
double isDgood(double D,double*Y);
在函数“solve”中,可以调用函数“funct”并使用以下方法访问其参数:
fA=funct(xA,(double*)(&funct+1));"
虽然我不熟悉这种语法,但我猜想开发人员假设未指定的参数只是被压入堆栈。但是,此代码在 64k 平台上不再有效。我该如何更正此代码?我应该专门使用 Va_list 吗?
非常感谢您的帮助。
最佳答案
这是可怕的未定义行为。如果您想访问参数,则必须传递它们。
关于c++ - 旧代码 : access arguments of a function passed as an argument to another function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5890882/