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

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

このコードでは、引数を省略記号から に渡そうとしましたprintf。コンパイルはしますが、78 ではなくガベージを出力します。正しい方法は何ですか?

4

3 に答える 3

7

次のことを行う必要があります。

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

vprintfの代わりに を使用することに注意してくださいprintf

于 2013-09-10T10:07:09.560 に答える
0

最初の初期化vl

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

それintから

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

于 2013-09-10T10:07:05.970 に答える