Я пытаюсь создать свою собственную функцию printf, но она не работает. Результат представляется правильным форматом, но параметры не получаются правильно, кажется, и я получаю значения мусора. Я использую GCC. См. Код ниже.Почему мои варидические аргументы не работают в C?
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);
Я ожидаю, что петлевой 10 должны быть напечатаны на первой линии, а LOOP б 12 на следующий, но я получаю петлевой 542 и LOOP б 542.
Пожалуйста, покажите нам номер вызывающий абонент, а аргументы передаются в – EvilTeach
@EvilTeach - добавлен кода вызывающего –