Я пытаюсь создать свою собственную функцию printf, но она не работает.Выходные данные выглядят в правильном формате, но параметры передаются неправильно, кажется, и я получаю значения мусора.Я использую GCC.См. Приведенный ниже код.
void con_printf(char *fmt, char attr, ...)
{
char *s = printf_buffer;
va_list args;
va_start(args, fmt);
vsnprintf(s, CON_TMPSIZE, fmt, args);
va_end(args);
while(*s != '\0')
{
con_putchr(*s, attr);
s++;
}
con_flush();
}
printf_buffer определяется как длина CON_TMPSIZE байтов, что в этой версии составляет 128 байтов.Это для небольшого микроконтроллера, но я ожидаю, что принцип применим к любому процессору.
Я называю это так:
con_printf("LOOP a %d\n", 0, 10);
con_printf("LOOP b %d\n", 0, 12);
Я ожидаю, что LOOP 10 будет напечатан на первоми LOOP b 12 на следующей, но я получаю LOOP a 542 и LOOP b 542.