Va_list访问第二个参数

时间:2011-05-05 16:15:45

标签: c++ variadic-functions

我尝试编写一个函数:

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

这里,'funct'是另一个作为参数传递的函数。现在我想使用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成功找到了函数'funct'的第一个参数,它是一个双精度函数。但是,va_arg的第二次使用无法获得指向double(第二个参数)的正确指针。你知道这是否可行,如果没有,怎么办?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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