【发布时间】:2014-11-28 17:12:04
【问题描述】:
我在一个受限的嵌入式系统上工作。
目前我们使用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 的源代码吗?如果它按字符输出字符,则可能没有缓冲区,但这取决于 libc 实现。