Tag: packed

包装结构是否便携?

我在Cortex-M4微控制器上有一些代码,并想用二进制协议与PC进行通信。 目前,我正在使用GCC特定packed属性的打包结构。 这是一个粗略的概述: struct Sensor1Telemetry { int16_t temperature; uint32_t timestamp; uint16_t voltageMv; // etc… } __attribute__((__packed__)); struct TelemetryPacket { Sensor1Telemetry tele1; Sensor2Telemetry tele2; // etc… } __attribute__((__packed__)); 我的问题是: 假设我在MCU和客户端应用程序上使用了完全相同的TelemetryPacket结构定义,那么上面的代码是否可以跨多个平台进行移植? (我对x86和x86_64感兴趣,需要它在Windows,Linux和OS X上运行。) 其他编译器是否支持具有相同内存布局的打包结构? 用什么语法? 编辑 : 是的,我知道打包的结构是非标准的,但它们似乎有用,足以考虑使用它们。 我对C和C ++都感兴趣,但我不认为GCC会以不同的方式处理它们。 这些结构不会被inheritance,也不会inheritance任何东西。 这些结构只包含固定大小的整数字段和其他类似的打包结构。 (我以前曾经被花车烧过)