完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在创建一个消息结构,用于与另一个 MCU 进行串行通信。
我想创建一个包含字段的结构,这样我就可以使用一个允许字段访问和流访问的联合。 仅当我可以在不填充字节的情况下打包结构时,这才有效。如何使用 CHERTS MinGW 设置来做到这一点? 代码:全选typedef struct { byte fld1; byte fld2; } field_type; typedef union { field_type fld; byte arr[2]; } packet_type; 代码:全选#pragma pack(push, 1) typedef struct { byte fld1; byte fld2; } field_type; typedef union { field_type fld; byte arr[2]; } packet_type; #pragma pack(pop) |
|
相关推荐
1个回答
|
|
要使用 CHERTS MinGW 设置来设置消息结构并避免填充字节,您可以使用以下代码:
``` #pragma pack(1) typedef struct{ byte fld1; byte fld2; } __attribute__((packed)) field_type; typedef union{ field_type fld; byte arr[2]; } packet_type; #pragma pack() ``` 在上面的代码中,`#pragma pack(1)` 指示编译器以尽可能少的字节对齐结构体成员。`__attribute__((packed))` 也将确保不会有任何填充字节。最后,`#pragma pack()` 恢复编译器默认的字节对齐设置。 这样,您就可以使用 `packet_type` 结构体来定义消息,并同时获得字段访问和流访问的优点,而无需担心填充字节。 请注意,如果使用不同的编译器,这种情况可能会有所不同。因此,确保在应用此代码前,先了解您的编译器的编译器指令和属性。 |
|
|
|
只有小组成员才能发言,加入小组>>
486 浏览 1 评论
552浏览 6评论
461浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
443浏览 5评论
445浏览 4评论
415浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 16:10 , Processed in 0.746096 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号