经验分享 · 2023年5月11日

谈上下位机通讯中C#结构体与C语言结构体的兼容问题——结构体对齐方式、定长数组及指定enum枚举的存储类型

上位机使用C#开发,而下位机是C语言开发,ARM MCU。在制定通讯协议时就出现了通讯协议结构体的兼容性问题,记录如下。

1、指定枚举存储类型 占用字节数

2、结构体对齐方式及对齐字节,默认情况下,32位ARM的C语言编译器会以4字节方式对齐,需要使用 #pragma pack(1) 来强制其按1字节对齐