qcreator在arm平台下内存对齐的问题

LinuxInEmbedded 2015-05-18 12:05:14
因为需要用到通信协议,要定义协议数据结构体,请教下默认对齐字节是多少?这样
//#pragma pack(1)指定单字节对齐后再恢复回来,如何获取系统平台下内存的默认对齐字节数?
...全文
97 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
9468305 2015-05-20
  • 打赏
  • 举报
回复
引用 2 楼 ShenDuYouLan 的回复:
[quote=引用 1 楼 public_static 的回复:] 1.既然是做网络协议的struct,那用1字节对齐就行了。不用管平台。 2.字节对齐首先是编译器环节,想知道默认对齐字节数,也应该先查编译器选项。你在arm平台下,那就先看gcc或clang的设置。 跟平台没太大关系。
我希望只是有限的数据使用单字节对齐,其余使用默认,不然不是影响执行速度的说?有人说在需要使用单字节对齐的地方使用#pragma pack(1),完了再用#pragma pack()表示恢复到默认状态,不知是否可行,这个待测试。。。多谢[/quote] 可以限定范围,用#pragma pack(1) #pragma pack()可以。 执行速度没关系。很少有程序的性能瓶颈在协议解析上。所以全局使用1字节对齐是好习惯。
LinuxInEmbedded 2015-05-19
  • 打赏
  • 举报
回复
引用 1 楼 public_static 的回复:
1.既然是做网络协议的struct,那用1字节对齐就行了。不用管平台。 2.字节对齐首先是编译器环节,想知道默认对齐字节数,也应该先查编译器选项。你在arm平台下,那就先看gcc或clang的设置。 跟平台没太大关系。
我希望只是有限的数据使用单字节对齐,其余使用默认,不然不是影响执行速度的说?有人说在需要使用单字节对齐的地方使用#pragma pack(1),完了再用#pragma pack()表示恢复到默认状态,不知是否可行,这个待测试。。。多谢
9468305 2015-05-19
  • 打赏
  • 举报
回复
1.既然是做网络协议的struct,那用1字节对齐就行了。不用管平台。 2.字节对齐首先是编译器环节,想知道默认对齐字节数,也应该先查编译器选项。你在arm平台下,那就先看gcc或clang的设置。 跟平台没太大关系。

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧