Я работаю над ограниченной встроенной системой.Где буфер форматирования для printf?
В настоящее время мы используем snprintf
в буфер, а затем с другим утверждением, печать буфера последовательного порта:
char temp_buffer[256];
int bytes_written = snprintf(temp_buffer, sizeof(temp_buffer),
"Solar system has %d planets\n",
10);
if (bytes_written > 0)
{
Serial_Port_Output(temp_buffer, bytes_written);
}
Я хочу, чтобы переключиться на printf
писать непосредственно к последовательному порту. В документации нашего компилятора я перехватил вызов функции для вывода данных для использования последовательного порта. (Интерфейс использует запись блока: адрес и количество символов).
Функция printf
может использовать буфер символов для форматирования, такой как целочисленный или с плавающей точкой в текст.
Вопросы:
- Где это буфер, который
printf
использует для форматирования? (Другие запрашивающие умы хотят знать, прежде чем вносить изменения.) - Является ли это компилятором (платформой), зависящим от проблемы?
Платформа: процессор Arm7tdmi, система на чипе (SOC), компилятор IAR EW.
Это скорее библиотека C, чем компилятор. У вас есть источник для вашего libc? Может быть, нет буфера, если он выводит char по char, но это зависит от реализации libc. –