我在一個受約束的嵌入式系統上工作。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,但取決於libc實現。 – 2014-10-03 16:01:36