其他分享
首页 > 其他分享> > c – 使用未知数量的参数调用可变参数函数

c – 使用未知数量的参数调用可变参数函数

作者:互联网

假设我有一个带有可变数量参数的函数:我想从其他地方调用这个函数,构建参数列表,但事先不知道我需要多少个参数.

对不起,没有得到很好的解释,希望这段代码能让我的问题更加清晰:

void foo(int n, ...) {
    va_list vl;
    va_start(vl,n);

    for (int i = 0; i<n; i++) {
      // Do something to each passed variable
    }
}

从这一个调用该函数:

void bar(int howManyParams) {

  // Here I want to call foo() with howManyParams parameters
  // (values are irrelevant for the question)
  // 
  // I.e. for howManyParams = 1, we should call foo(0)
  //      for howManyParams = 2, we should call foo(0,0)
  //      for howManyParams = 3, we should call foo(0,0,0)
  // etc.
  //

}

解决方法:

实际上在运行时构建一个可变长度的参数列表 – 这是我非常肯定你要做的 – 非常棘手.在标准C中根本无法做到这一点,但你可以尝试各种技巧.

也许最好的是http://sourceware.org/libffi/的“外部函数接口库”.

另见C FAQ列表中的问题15.13:http://c-faq.com/varargs/invvarargs.html

另请参阅以前的Stackoverflow问题:
C late binding with unknown arguments
How to call functions by their pointers passing multiple arguments in C?

标签:c-3,c,variadic-functions
来源: https://codeday.me/bug/20190829/1760500.html