【发布时间】:2010-12-15 10:23:33
【问题描述】:
假设你有 2 个函数:
void func(int x,int y,...)
{
//do stuff
}
void func2(int x,...)
{
func(x,123,...);
}
你怎样才能完成这项工作,例如将 arg-list 传递给另一个函数?
编辑:这是duplicate,有人可以合并它们吗?
【问题讨论】:
标签: c
假设你有 2 个函数:
void func(int x,int y,...)
{
//do stuff
}
void func2(int x,...)
{
func(x,123,...);
}
你怎样才能完成这项工作,例如将 arg-list 传递给另一个函数?
编辑:这是duplicate,有人可以合并它们吗?
【问题讨论】:
标签: c
要添加到“放松”答案中:
va_start(3) 手册页有很好的解释如何使用 va_list 对象,包括很好的例子。
printf(3) 页面还包含更好的基于 va_list 的 vsnprintf(3) 调用基础架构示例(您可以使用任何 printf() 变体名称访问此页面)。
【讨论】:
您需要一个单独的版本来处理显式参数列表:
void vfunc(int x, va_list args)
{
/* do stuff */
}
void func2(int x, ...)
{
va_list arg;
va_start(arg, x);
vfunc(x, arg);
va_end(arg);
}
这就是有像@987654321@这样的标准函数的原因。
【讨论】: