-
-
[分享]结构体
-
发表于:
2021-4-22 00:46
3595
-
结构体规范命名:tag
重定向:> 重新定义标准输出,输入设备。例如文件 std
重定位:模块创建时 基质被占,就要重定位。
DOB:data of Birth
stdlib.h :标准函数库
stddef:标准定义库
stdio.h 标准IO库
**
结构体对齐
设编译对齐为zp
设成员变量到结构体变量的地址差为member offset
设成员变量的类型位member type
member offset 必须满足
member offset % min(zp,sizeof(member type)) == 0;
设结构体自身对齐值为StrAli
StrAli 满足:
StrAli = max(sizeof(member type),sizeof(member type1)...)
StrAli = min (Zp ,) ;
sizeof(结构体变量)必须满足:
sizeof(结构体变量) % StrAli **== 0;
操作系统对结构体的寻址方式:
structObj . Member:结构体对象
structObj . Member or structObj .->Member
(member type)((int)&structObj)+ member offset
注意:结构体嵌套的话 StrAli = 嵌套结构体的对齐值。
#define GETOFFSET(s,m) (size_t)&((s)0->m) *获取结构体 成 员 偏移的宏。自己实现的
offsetof: 标准库关键字 头文件: <stddef.h>
代码修改结构体对齐值
#pragma pack(push) //保存当前对齐值
#pragma pack(1) //修改当前对齐值为1
#pragma pack(pop) //回复当前对齐值为原来保存的之。
**
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课