Старый код: доступ к аргументам функции, переданной в качестве аргумента другой функции? - PullRequest
0 голосов
/ 05 мая 2011

Мне нужно сохранить старый фрагмент кода, который больше не работает корректно при компиляции на машинах 64k.

У меня есть функция «решить», вызывающая другую функцию «функция», переданную как указатель:

int solve(double*x,double xA,double xB,double zeps,double funct(double x,double*),...)

Следовательно, «решить» можно использовать с различными возможными функциями, например:

double isDgood(double D,double*Y);

Из функции «решить»", можно было вызвать функцию" funct "и получить доступ к ее аргументам, используя:

fA=funct(xA,(double*)(&funct+1));"

Хотя я не знаком с этим синтаксисом, я предполагаю, что разработчик предполагал, чтонеуказанные аргументы были просто помещены в стек.Однако этот код больше не работает на платформах 64k.Как я могу исправить этот код?Должен ли я специально использовать Va_list?

Большое спасибо за помощь.

1 Ответ

2 голосов
/ 05 мая 2011

Это ужасно неопределенное поведение. Если вы хотите получить доступ к аргументу, вам придется передать их.

...