【问题标题】:How can one variable-args function call another? [duplicate]一个可变参数函数如何调用另一个? [复制]
【发布时间】: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


    【解决方案1】:

    要添加到“放松”答案中:

    va_start(3) 手册页有很好的解释如何使用 va_list 对象,包括很好的例子。

    printf(3) 页面还包含更好的基于 va_list 的 vsnprintf(3) 调用基础架构示例(您可以使用任何 printf() 变体名称访问此页面)。

    【讨论】:

      【解决方案2】:

      您需要一个单独的版本来处理显式参数列表:

      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@这样的标准函数的原因。

      【讨论】:

      • 这帮助我避免了代码重复;谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 2011-01-04
      • 1970-01-01
      • 2019-04-07
      • 1970-01-01
      相关资源
      最近更新 更多