当前位置: 首页 > 知识库问答 >
问题:

将变量参数传递给接受变量参数列表的另一个函数

岳浩穰
2023-03-14

所以我有两个函数都有相似的参数

void example(int a, int b, ...);
void exampleB(int b, ...);

现在,example调用exampleB,但我如何在不修改exampleB的情况下传递变量参数列表中的变量(因为这在其他地方也已经使用了)。

共有2个答案

万高畅
2023-03-14

也许在池塘里扔块石头,但在C++11变量模板中似乎可以很好地工作:

#include <stdio.h>

template<typename... Args> void test(const char * f, Args... args) {
  printf(f, args...);
}

int main()
{
  int a = 2;
  test("%s\n", "test");
  test("%s %d %d %p\n", "second test", 2, a, &a);
}

至少,它可以使用g++

成浩漫
2023-03-14

你不能直接做;您必须创建一个使用va_list的函数:

#include <stdarg.h>

static void exampleV(int b, va_list args);

void exampleA(int a, int b, ...)    // Renamed for consistency
{
    va_list args;
    do_something(a);                // Use argument a somehow
    va_start(args, b);
    exampleV(b, args);
    va_end(args);
}

void exampleB(int b, ...)
{
    va_list args;
    va_start(args, b);
    exampleV(b, args);
    va_end(args);
}

static void exampleV(int b, va_list args)
{
    ...whatever you planned to have exampleB do...
    ...except it calls neither va_start nor va_end...
}
 类似资料:
  • 问题内容: 我有一个PHP函数,该函数需要可变数量的参数(使用和),但是我要传递给该函数的参数数量取决于数组的长度。有没有一种方法可以使用可变数量的参数来 调用 PHP函数? 问题答案: 如果参数在数组中,则该函数可能会对您有兴趣。 如果您要传递的参数数量取决于数组的长度,则可能意味着您可以将它们自己打包到数组中-并将其用于第二个参数。 然后,您传递给该数组的元素将作为不同的参数被函数接收。 例如

  • 问题内容: 我尝试了以下失败的尝试: 在函数a中,我可以使用arguments关键字来访问参数数组,而在函数b中,这些参数将丢失。有没有办法像我尝试的那样将参数传递给另一个javascript函数? 问题答案: 用于对in函数具有相同的访问权,如下所示:

  • 以下是我正在努力做的: 在WordPress中,我通过wp_localize_script()将一个变量从php传递到外部javascript文件,这部分似乎可以工作,但我想在jQuery函数中使用变量值作为键控参数。 使用alert,正确的值似乎被传递给javascript,但我不知道如何在函数的参数中引用它们。(特别是WideSliderParams.slideshow和speed。) 这里是

  • 我是的新用户,我想回忆不同变量的代码块,我想做如下事情: 这里的都是中的变量。如果我调用,这部分就可以工作了。但是,我调用的方式仍然没有告诉这个函数group by是由完成的。我怎么让它工作?

  • 问题内容: 与在或中使用的方式类似: 问题答案: 是。 如果你不理会关键字参数,这很简单并且可以工作: 如你所见,Python将为你提供一个包含所有参数的元组。 对于关键字参数,你需要将其作为单独的实际参数接受,如的所示。

  • 问题内容: 我想将传递给function()的所有参数作为参数传递给内部的另一个function(), 这可以在被调用过程中完成并将它们传递给,但是还有另一种方法吗? 本来 但是如果我的func1签名是 我如何将它们全部发送到func2,而不使用 有没有一种方法像在javascript中? 问题答案: 显式比隐式更好, 但是如果您真的不想键入一些字符,请执行以下操作: 都是局部变量,因此您不能在调