printf实现
来源:互联网 发布:办公室自动化软件 编辑:程序博客网 时间:2024/05/07 13:47
详解U-Boot中printf函数的实现
一、printf函数调用关系
1.1fputc和srial_putc的关系
这是在console_init_r中设置stdio_devices[]后才有的,其他的是类似的。
1.2putc和fputc的关系
这是console_init_r中设置gd->flags & GD_FLG_DEVINIT,也就是串口设备完全初始化之后才有这种关系,其他的函数是类似的。
二、serial_printf (const char *fmt, ...)
serial_printf函数是通过一个宏va_start把所有的可变参数放到了由args指向的一块内存中,vsprintf将变参列表args中的变量按照fmt中规定的格式保存到临时缓冲printbuffer中,最后调用serial_puts函数将临时缓冲中的字符串数据打印到终端中去。
三、fprintf(int file, const char *fmt, ...)
fprintf函数是通过一个宏va_start把所有的可变参数放到了由args指向的一块内存中,vsprintf将变参列表args中的变量按照fmt中规定的格式保存到临时缓冲printbuffer中,最后调用fputs函数将临时缓冲中的字符串数据打印到终端中去。
四、vprintf(const char *fmt, va_list args)
vprintf函数是通过一个宏va_start把所有的可变参数放到了由args指向的一块内存中,vsprintf将变参列表args中的变量按照fmt中规定的格式保存到临时缓冲printbuffer中,最后调用puts函数将临时缓冲中的字符串数据打印到终端中去。
五、printf(const char *fmt, ...)
printf函数是通过一个宏va_start把所有的可变参数放到了由args指向的一块内存中,vsprintf将变参列表args中的变量按照fmt中规定的格式保存到临时缓冲printbuffer中,最后调用puts函数将临时缓冲中的字符串数据打印到终端中去。
六、小结
serial_printf、vprintf和pringf函数基本相同,都是通过一个宏va_start把所有的可变参数放到了由args指向的一块内存中,vsprintf将变参列表args中的变量按照fmt中规定的格式保存到临时缓冲printbuffer中,最后调用不同的串口输出函数将临时缓冲中的字符串数据打印到终端中去。下面我们就来分析一下va_start、va_eng和vsprintf。
0 0
- printf实现
- printf实现
- printf 的简单实现
- printf函数实现
- 如何实现printf函数
- printf实现动态显示
- printf的实现
- printf()的实现
- 实现printf函数
- printf 实现原理
- printf简单实现版本
- printf可变参数实现
- printf函数实现
- printf 源代码 实现
- printf的实现原理
- printf实现原理
- printf函数实现原理
- printf的实现
- 如果不是因为你,还有谁值得
- 用Unity开发Flappy Bird
- swarm-run.sh
- 关于数组去重的小案例介绍
- 差速锁与限滑差速器的区别
- printf实现
- 剑指offer----树的子结构----java实现
- c/c++使用指针做函数返回值和指针作函数参数问题
- 关于PHP+MSSQL查询输出的内容末尾乱码问题!
- Android 热补丁动态修复框架小结
- android - RadioButton椭圆形背景样式和字体选择时候的颜色
- 数据格式转换和数据格式扩展的区别与联系
- 【Effective C++读书笔记】篇七(条款16~条款17)
- Ribbon界面编辑框或下拉框使能问题