Tho*_*ews 4 c c++ embedded printf iar
我在一个受限制的嵌入式系统上工作.
目前我们使用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);
}
Run Code Online (Sandbox Code Playgroud)
我想切换到printf直接写入串口.根据我们的编译器文档,我拦截了函数调用以输出数据以使用串行端口.(接口使用块写入:地址和字符数).
该printf函数可以使用字符缓冲区进行格式化,例如整数或浮点到文本.
问题:
printf用于格式化的缓冲区在哪里?(在我做出改变之前,其他有探究的人都想知道.)平台:Arm7tdmi处理器,片上系统(SOC),IAR EW编译器.
R..*_*R.. 13
这完全是针对特定于实现的.printf没有义务使用任何缓冲区.当然,它在其处置与相关联的标准输入输出缓冲器FILE(stdout在的情况下printf),但可以是零长度的,如果程序关闭缓冲与setbuf/ setvbuf.它也可能printf有一个内部缓冲区; 对于正确的C实现,这需要具有自动存储("在堆栈上"),但是没有线程的低质量嵌入式可能使用静态缓冲区.在任何情况下,都printf被指定为通过重复调用来工作fputc,并且它当然可以以这种方式实现而没有任何缓冲区.
| 归档时间: |
|
| 查看次数: |
420 次 |
| 最近记录: |