完善资料让更多小伙伴认识你,还能领取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` 结构体来定义消息,并同时获得字段访问和流访问的优点,而无需担心填充字节。 请注意,如果使用不同的编译器,这种情况可能会有所不同。因此,确保在应用此代码前,先了解您的编译器的编译器指令和属性。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
945 浏览 0 评论
1672 浏览 0 评论
请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
1330 浏览 1 评论
1233 浏览 1 评论
5021 浏览 2 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
1254浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
927浏览 3评论
2340浏览 3评论
ESP-IDF的VScode插件的build按钮点击会报错的原因?
2528浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
1052浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 19:51 , Processed in 0.588277 second(s), Total 44, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
457
