我正在尝试将 printf 包装在 C 程序中(嗯,实际上是 _snprintf,但这个例子更简单)并且无法让变量参数的东西工作。这是我的代码:
#include <stdio.h>
#include <stdarg.h>
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
args 变量在我的代码中调用后看起来不错va_start
,但是一旦我进入 C 运行时代码并且他们调用va_start
的值看起来很糟糕。关于我可能做错了什么的任何想法?