可以告诉 GCC 它不应该对结构使用填充。这是使用__attribute__((packed))
.
typedef struct {
uint8_t startSymbol;
uint8_t packetType;
uint32_t deviceId;
uint16_t packetCRC;
} PacketData __attribute__((packed));
但是,最新的 Xcode 使用 LLVM 并且不识别该属性。如何为 LLVM 定义打包结构?
问题的完整描述可以在这里找到
更新 我正在使用适用于 iOS 的 Xcode 4.5.1,它使用 Apple LLVM 4.1 编译器。在上面的代码示例中,我在 Xcode 中收到“'packed' attribute ignored”警告。