【问题标题】:How to create a function to call a variable arg function? [duplicate]如何创建一个函数来调用变量 arg 函数? [复制]
【发布时间】:2011-10-26 01:58:46
【问题描述】:

可能重复:
C/C++: Passing variable number of arguments around

我需要将调用 C API 的所有函数放入单独的源文件单元中。这是由于定义干扰了其他代码。所以要保持可能的干扰代码分开。

无论如何,大多数函数都是例如 int function2(int) 所以我只是在单独的文件中实现,如下所示:

int XXfunction1(int val) { return function(val) }

但我也有像这样带有可变参数的函数:

extern int function2(int, ...)

那么我怎样才能编写自己的函数来调用它呢?

这似乎不起作用:

int XXFunction2(int val, ...) {
   return function2(val, ...);
}

如何编写函数?

【问题讨论】:

    标签: c


    【解决方案1】:

    您需要一个可以采用可变参数列表的“v”版本的方法。

    int function2v(int val, va_list arg_list)
    {
        //Work directly with the va_list
    }
    
    //And to call it
    int XXFunction2(int val, ...) {
       int returnVal;
       va_list list;
       va_start(list, val);
    
       returnVal = function2v(val, list);
    
       va_end(list);
    
       return returnVal;
    }
    

    【讨论】:

      【解决方案2】:

      Function2 必须在 XXFunction2 之前声明它才能工作。可以做的是将.h文件上的函数签名,并在使用前导入,否则C在编译XXFunction2时找不到Function2,导致编译错误。

      【讨论】:

      • 这个答案与手头的问题无关。
      • 尽可能准确,但没有抓住问题的重点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-07
      • 1970-01-01
      • 2017-05-18
      • 2010-12-15
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多