c - 在可变参数函数的包装器中中继可选参数

标签 c variadic

我刚刚在 C 中发现了可变参数函数,并将其定义为通用通知 typedef,它以及指向文本字符串的指针可以有选择地与它一起发送任何参数——例如用作通用调试函数我希望所有输出字符串操作都集中在一个地方。

因为我希望我的 C 文件尽可能通用,所以我有静态变量,其中包含指向更高代码中可能的回调的指针,并在 init 调用中填充。由于如果更高的代码不感兴趣,指针可能为空,我通常有一个本地包装器,如果它不为空,则只通过指针调用。但是我无法弄清楚如何转发这个由“...”表示的模糊事物,并且简单地在参数列表中使用“...”调用函数会产生语法错误。

有什么方法可以做到这一点,还是我坚持使用虚拟本地处理程序并让 init 将空回调设置为指向它的指针?

最佳答案

您不能传递可变参数。您必须将它们提取到 va_list 并将其传递给内部函数。

看看this Question at the C FAQ .它定义了一个可变的 error 函数,该函数想要转发给 printf。这只是您的用例。

same FAQs ,通常建议为每个(或大多数)可变参数函数采用 va_list 的版本

关于c - 在可变参数函数的包装器中中继可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22783155/

相关文章:

C:将参数从可变参数函数传递给可变参数宏

没有第一个的 C++ 可变参数

C++ 多变参数模板未绑定(bind)到函数参数

c - 如何使用C语言从Arduino板读取数据到PC?

c - AIX下128位比较(64位)对hash值排序

c - Opengl 什么也没画,只是告诉我没有错误

c -/bin/ sleep : invalid time interval ‘’

c - 为什么 248x248 是我可以声明的最大二维数组大小?

c++ - 可变参数模板类的可变参数模板

C++ 和预处理器宏 : variadic type