Sto cercando di avvolgere printf in un programma C (beh, in realtà _snprintf ma questo esempio è più semplice) e sto avendo problemi a far funzionare gli argomenti delle variabili. Ecco il mio codice:Problemi nel wrapping Printf in programma C
#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;
}
Ecco la mia uscita:
100
3668388
La variabile args sembra buono dopo la chiamata a va_start
nel mio codice, ma non appena faccio un passo nel codice C runtime e chiamano va_start
il valore sembra scadente. Qualche idea su cosa potrei fare male?
possibile duplicato di [call printf utilizzando va_list] (http://stackoverflow.com/questions/5977326/call-printf-using-va-list) –