【发布时间】:2014-01-04 14:02:10
【问题描述】:
在这个例子中,这段代码虽然编译它并没有产生正确的结果:
void encapsulatePrintf(const char *str, ...) {
va_list argptr;
va_start(argptr, str);
printf(str, argptr);
va_end(argptr);
}
然后主要是:encapsulatePrintf("test str: %i - %s", 22, "test2");
- 结果是内存中某处的随机字节:
test str: 2293428 - á "
但是当我将函数从 printf 更改为 vfprintf(stdout, str, argptr);
- 所有输出都正常。
这是怎么回事?
【问题讨论】:
标签: c++ c gcc printf variadic-functions