我正在尝试将printf包装在一个C程序中(好吧,实际上是_snprintf,但这个例子更简单)并且我无法使变量参数的东西起作用.这是我的代码:
#include
#include
void works(void)
{
printf("%d\n", 100);
}
void wrap_printf(const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
printf(fmt, args);
va_end(args);
}
void broken(void)
{
wrap_printf("%d\n", 100);
}
int main(void)
{
works();
broken();
return 0;
}
这是我的输出:
100
3668388
在我的代码中调用va_start之后,args变量看起来很好,但是当我进入C运行时代码并且它们调用va_start时,该值看起来很糟糕.关于我可能做错什么的任何想法?