如何将参数从省略号运算符传递到其他函数?

时间:2013-09-10 10:00:56

标签: c++ printf ellipsis

void myPrintf(const char* format, ...) {
    // some code
    va_list vl;
    printf(format, vl);
}

int main() {
    myPrintf("%d\n", 78);
}

在这段代码中,我试图将参数从省略号传递给printf。它编译但打印垃圾而不是78.这是正确的方法吗?

3 个答案:

答案 0 :(得分:6)

您需要执行以下操作:

void myPrintf(const char *format, ...) {
    va_list vl;
    va_start(vl, format);
    vprintf(format, vl);
    va_end(vl);
}

请注意使用vprintf代替printf

答案 1 :(得分:1)

两个问题:

  1. 首先,您不会初始化vl,请使用va_start。不要忘记之后使用va_end

  2. 另一个问题是printf没有va_list参数。请使用vprintf

答案 2 :(得分:0)

首先初始化vl

va_start(vl,1); //No. of arguments =1

然后从中获取int

printf(format, va_arg(vl,int));