我有一个具有以下原型(prototype)的函数:
void func(int an, ...);
我想存储这个函数的地址,稍后调用它。 我真的不知道该怎么做,我拼命地尝试了:
void (*funcPtr)(int, ...); // Declaration
funcPtr = func; // Storage
(*funcPtr)(3,2,5); // Call
这段代码编译得很好,但在执行时它确实很糟糕,当我输入我的函数时,va_list
中的参数不是我发送的参数。
提前致谢
编辑: 好吧,我只是忘记了第一个参数。在我上面的代码中,调用行应该替换为:
(*funcPtr)(3,3,2,5); // Call
最佳答案
函数自然是指针。所以你可以简单地调用:
funcPtr(3,3,2,5);
看起来你一切都正确。如果函数没有可变参数,那么使用正确的参数“形状”声明函数指针以防止传递格式错误的参数是一个非常好的主意。
关于c - 具有可变数量参数的函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23329822/