c语言结构体字节对齐问题
来源:互联网 发布:norsecorp 前端源码 编辑:程序博客网 时间:2024/05/28 04:53
定义一个结构体,如:
typedef unsigned char uint8_t;typedef unsigned int uint32_t;typedef long long uint64_t;typedef struct{ uint32_t crc; uint8_t msgID; float a; uint8_t b; uint64_t payload64[2];} m_MessageHeader;
结构体 m_MessageHeader 的长度是:
这是结构体按照编译器默认的四字节对齐问题,而若实际中不需要字节对齐,而可以加入如下两行代码:
#pragma pack(1)typedef struct{ uint32_t crc; uint8_t msgID; float a; uint8_t b; uint64_t payload64[2];} m_MessageHeader;#pragma pack()
即结构体前后加上#pragma pack(1) 和#pragma pack(),括号中的1是按照一字节对齐,也可以2、3等
自己需求的字节对齐。
或者下面这种方式同样可以,结构体前后加上 __pragma(pack(push,1)) 和 __pragma(pack(pop))。
__pragma(pack(push,1))typedef struct{ uint32_t crc; uint8_t msgID; float a; uint8_t b; uint64_t payload64[2];} m_MessageHeader;__pragma(pack(pop))
那么编译结果为:
0 0
- c语言结构体字节对齐问题
- 关于C语言中结构体字节对齐问题
- C语言结构体的字节对齐
- C语言中结构体字节对齐
- C语言结构体 字节对齐
- C语言结构体的字节对齐
- C语言中的结构体字节对齐
- C语言结构体字节对齐
- C语言结构体的字节对齐
- C语言结构体的字节对齐
- C语言结构体字节对齐总结
- C语言结构体字节对齐
- C语言结构体字节对齐
- C语言结构体字节对齐
- C - 结构体字节对齐问题
- C语言字节对齐问题
- C语言:字节对齐、问题
- C语言字节对齐问题
- bzoj4900【CTSC2017】Day1T1 密钥 cipher 乱搞
- Android 应用Crash处理
- Linux 常用C函数 在线查询
- 汇编中AREA和ENTRY理解
- Spring Security4.0.3源码分析之authentication-manager标签解析
- c语言结构体字节对齐问题
- 欢迎使用Markdown编辑器写博客
- 智能指针
- 常见对象-String类-4
- 文章标题
- 【php基础班】第2天 HTML实例、bgsound、HTML颜色、计算机编码、meta标签、img标签、a标签、w3c、URL
- C# WinForm开发系列之DataTimePicker控件显示月份的限制和关于DataTimePicker和monthCalendar的样式设置问题
- Problem : STL——Jerry的问题
- 开播!