506_linux内核学习_sprintf函数分析

         全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux

         前面看了vsprintf的实现,在代码中看到这个函数经过又一层封装变成了sprintf。之前看vsprintf的时候,其实看得也有点糊涂。其实,结合这个代码实现倒是有点理解了这个使用方式。

         其实,vsprintf的部分参数确定其实正好是通过va_start来实现的。在vsprintf中,通过va_arg类似逐个遍历的方式处理每个参数。

         也基本上可以理解为什么用到了__va_rounded_size这样的处理,其实这个主要是因为处理的对象是函数的参数。而这个都是在堆栈中,因此得有这样的一个对齐要求。

         而sprintf的功能,类似printf,只是这个比较特殊,打印的位置是存储的buffer。相应软件接口的调用:

         这个打印的位置是term,相应的定义:

         打印的位置是32个字节。这个可以通过内存的查看来看一下这个结果,其实这个在嵌入式里面也可以应用下。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页