Можно рассказать GCC, что он не должен использовать дополнение для структуры. Это делается с помощью __attribute__((packed))
.
typedef struct {
uint8_t startSymbol;
uint8_t packetType;
uint32_t deviceId;
uint16_t packetCRC;
} PacketData __attribute__((packed));
Однако новейший Xcode использует LLVM и не распознает атрибут. Как определить упакованную структуру для LLVM?
Полное описание проблемы можно найти здесь
UPDATE Я использую Xcode 4.5.1 для iOS, который использует компилятор Apple LLVM 4.1. Я получаю "упакованный" атрибут ignored "предупреждение в Xcode в приведенном выше примере кода.