我尝试编写一个函数:
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(第二个参数)的正确指针。你知道这是否可行,如果没有,怎么办?
答案 0 :(得分:1)
你误解了函数指针的工作方式。函数指针是存储函数时指向内存中位置的指针,它不包含有关该函数参数的任何信息。调用函数指针时,必须自己为函数提供参数。
因此您无法访问funct
指针的参数,因为这些参数尚不存在。只有在调用了tip-do函数时才会存在它们,这可能发生在你的代码中。
答案 1 :(得分:0)
功能不使用省略号,你不能在其上应用va_list函数。