在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吗?
非常感谢你的帮助。
答案 0 :(得分:2)
这是可怕的未定义行为。如果你想访问参数,你将不得不传递它们。