Cプログラムでprintfをラップしようとしています(実際には_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
、値が悪く見えます。私が間違っているかもしれないことについて何か考えはありますか?