全部学习汇总: https:///GreyZhang/little_bits_of_linux

         在分析linux的代码的时候,main最开始的时候调用了一个sprintf函数。这里面用到了一个宏__va_rounded_size。今天看看这个宏的功能。其实,在C语言的开发中基本上都是直接使用标准库中提供的这个功能。一般,stdarg.h文件中包含了相应的定义。我正在看的linux代码中也直接包含了这个文件,不过可能是一个精简版本的。

         这个宏的定义如下:

504_linux内核学习___va_rounded_size宏分析_Linux

         这个是这个文件中的定义。

504_linux内核学习___va_rounded_size宏分析_Linux_02

         我增加了一个注释,其实这个分析还是很简单的。

         这个功能其实是对这个参数的大小按照int类型进行向上取整。

         把这部分单独摘出来,做一个简单的测试:

504_linux内核学习___va_rounded_size宏分析_Linux_03

         编译运行:

504_linux内核学习___va_rounded_size宏分析_Linux_04

         看起来跟分析的一致,这里的显示结果倒是有点意思。主要有意思的点在于指针类型的空间,其实这个并不是4而是8,主要是因为我现在的用的机器是64bit的。

         看起来,这个也是一个比较有用的一个小代码段。可以收集整理一下,放到我自己的工具箱里面。