如何解决可变参数函数是否有可能将函数指针作为参数?
标题说明了一切。函数可以作为参数在可变参数函数中传递吗?如果可以,我该如何访问它?
#include <stdio.h>
#include <stdarg.h>
#include <math.h>
void func(double x,int n,...){
va_list fs;
va_start(fs,n);
for (int i = 0; i < n; i++)
{
va_arg(fs,*); //this is where I get confused
}
}
int main(){
double x = 60.0 * M_PI / 180.0;
func(x,3,&cos,&sin,&exp);
}
解决方法
va_args
的第二个参数是要转换的类型。在这种情况下,每个函数都有兼容的类型,特别是它们将单个 double
作为参数并返回一个 double
。指向此类函数的指针的类型是 double (*)(double)
,因此您将使用该类型。
double (*f)(double) = va_arg(fs,double (*)(double));
double result = f(x);
另外,不要忘记在循环后调用 va_end(fs);
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。