为什么以下代码不会产生任何输出?

时间:2014-02-14 07:16:03

标签: c++ g++4.8

为什么下面的代码不会产生任何输出?我预计它会42 s。如何解决?

#include <cstdio>
#include <cstdlib>
#include <cstdarg>

void foo(const char* format, ...)
{
    va_list args;
    va_start(args, format);
    printf(format, args);
    va_end(args);
}

int main()
{
    foo("%d %s\n", 42, "s");
    return 0;
}

http://ideone.com/EsHsRO

实际上,它会产生http://codepad.org/k7ld231E 为什么foo错了?

1 个答案:

答案 0 :(得分:2)

您需要使用vprintf代替: int vprintf( const char* format, va_list vlist );

vprintf(format, args);

printf()和朋友正常使用。当你想编写自己的vprintf()之类的函数时,printf()和朋友就可以了。