我在一个受约束的嵌入式系统上工作。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