c - 具有可变数量参数的函数的指针

标签 c function-pointers

我有一个具有以下原型(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/

相关文章:

c++ - if-else vs 三元函数调用性能

c - 如何为大整数实现整数数组加法器?

c - 一个字符是否作为带有填充的整个单词保存在内存中?

c - 在 Windows 上将 SQLite 与 C 结合使用

go - 如何在最新的 Go 周刊中比较两个函数的指针相等性?

c++ - 将 std::bind 转换为函数指针

c - 如何创建一个修改结构体的函数

c - 抛出异常 : Access violation writing location for Matlab Coder in Visual Studio

c - 夹板警告 "Statement has no effect"由于函数指针

c - 为什么这些类型定义得到相同的结果