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

时间:2011-05-04 23:05:12

标签: c++ ellipsis

在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吗?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

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