c++ - 旧代码 : access arguments of a function passed as an argument to another function?

标签 c++ ellipsis

我必须维护一段旧代码,它在 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/

相关文章:

c++ - 如何在 C++ 类中设置静态变量?

c# - 什么是标记接口(interface)?

c++ - 绘制多边形网格时 Opengl 性能问题

c# - 为什么我收藏的字符串会截断单词?

css - 你如何设计溢出的文本?

html - 使用文本溢出 : ellipsis; on a parent div when the child is an input

c++ - 关于二维 vector 的一些问题,C++

c++ - 无效函数导致编译器错误 "variable or field ‘funcName’ 声明无效”

html - 使用 flexbox 时 Bootstrap 文本不会被截断

c++ - cpp : catch exception with ellipsis and see the information