2011-05-05 97 views
0

我尝试写一个函数,即:va_list的访问第二个参数

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

这里,“本功能”是作为参数传递的另一个功能。现在我想用va_list来访问这个函数的第二个参数'funct'这是一个double*。所以,我做的:

va_list point_arg ; 
va_start (point_arg , funct) ; 
double pp = va_arg (point_arg , double ); 
double * pp = va_arg (point_arg , double *); 

看来,据我了解,我用第va_arg成功找到函数“本功能”,这是一个双重的第一个参数。但是,va_arg的第二次使用未能获得正确的指向double(第二个参数)的指针。你知道这是否可能,如果不是如何做到这一点?

回答

0

函数不使用省略号,你不能在其上应用va_list函数。

1

你误会了函数指针的工作方式。函数指针是存储函数时指向内存中位置的指针,它不包含有关该函数参数的任何信息。您在调用函数指针时必须自己提供参数给函数。

因此,您不能访问funct指针的参数,因为这些参数尚不存在。它们只有在调用了指向do函数时才会存在,这大概会发生在代码中。