在 C 中,是否可以转发可变参数函数的调用?如,
int my_printf(char *fmt, ...) {
fprintf(stderr, "Calling printf with fmt %s", fmt);
return SOMEHOW_INVOKE_LIBC_PRINTF;
}
在这种情况下,以上述方式转发调用显然不是绝对必要的(因为您可以用其他方式记录调用,或使用 vfprintf),但我正在处理的代码库需要包装器做一些实际工作,并且没有(也不能添加)类似于 vfprintf 的辅助函数。
[更新:根据目前提供的答案,似乎有些困惑。用另一种方式来表达这个问题:一般来说,你能包装一些任意的可变函数而不修改该函数的定义。]
最佳答案
如果您没有类似于 vfprintf
的函数这需要 va_list
而不是可变数量的参数,你做不到。参见 http://c-faq.com/varargs/handoff.html .
例子:
void myfun(const char *fmt, va_list argp) {
vfprintf(stderr, fmt, argp);
}
关于c - 在 C 中转发可变参数函数的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32156758/