/**
* struct pinctrl_setting_mux - setting data for MAP_TYPE_MUX_GROUP
* @group: the group selector to program
* @func: the function selector to program
*/
struct pinctrl_setting_mux {
unsigned group;
unsigned func;
};
unsigned group
是否与 unsigned int group
一致?还是 unsigned long group
基础类型一般用大小来衡量,比如 int 类型,在 32位或 64位平台上,都是 4个字节。而 long 类型,在 32位平台上是 32位,而在 64位平台上,是 64位
可以使用 C 语言的 sizeof
来获取 基础类型的占用多少字节
#include <stdio.h>
#include <stdlib.h>
unsigned a;
unsigned int b;
unsigned long c;
int main(int argc, char **argv)
{
printf("size : unsigned = %ld, %ld\n", sizeof(a), sizeof(unsigned));
printf("size : unsigned int = %ld, %ld\n", sizeof(b), sizeof(unsigned int));
printf("size : unsigned long = %ld, %ld\n", sizeof(c), sizeof(unsigned long));
return 0;
}
可以在 Linux ubuntu 下,直接 gcc 编译,然后运行,当前 ubuntu 是64位的
gcc unsigned_demo.c -o unsigned_demo
生成 可执行程序 unsigned_demo
测试结果
size : unsigned = 4, 4
size : unsigned int = 4, 4
size : unsigned long = 8, 8
这里说明, unsigned num
与 unsigned int num
一致,也就是如果只有 unsigned
,就是 unsigned int
类型。
这里还有一个小技巧: sizeof
返回值是 size_t
类型,如果打印这个 sizeof
返回的字节数,建议使用 %ld
如 printf("size : unsigned = %ld, %ld\n", sizeof(a), sizeof(unsigned));
Linux 内核代码就像是一个【宝藏】,里面有很多未知的各种开发经验、技术积累与技巧,等待深入的去探索。
可以多积累一些技术细节,这样阅读代码不再困惑,对代码实现有个正确、清晰的认识。