Có thể nói với GCC không nên sử dụng đệm cho cấu trúc. Điều này được thực hiện bằng cách sử dụng __attribute__((packed))
.Làm thế nào để khai báo cấu trúc đóng gói (không có đệm) cho LLVM?
typedef struct {
uint8_t startSymbol;
uint8_t packetType;
uint32_t deviceId;
uint16_t packetCRC;
} PacketData __attribute__((packed));
Tuy nhiên, Xcode mới nhất sử dụng LLVM và không nhận ra thuộc tính. Làm thế nào để xác định cấu trúc đóng gói cho LLVM?
Mô tả đầy đủ các vấn đề có thể được tìm thấy here
CẬP NHẬT Tôi đang sử dụng Xcode 4.5.1 dành cho iOS của Apple trong đó sử dụng LLVM 4.1 trình biên dịch. Tôi nhận được "'đóng gói' thuộc tính bỏ qua" cảnh báo trong Xcode trong ví dụ mã trên.
Tôi có thiếu thứ gì đó hay đây là tính năng xóa mới? Lần cuối cùng tôi kiểm tra, clang hỗ trợ '__attribute __ ((đóng gói))' ... –
clang hỗ trợ chính xác '__attribute __ ((đóng gói))' pragma ... – birryree
Không có ý tưởng :) Tôi đang sử dụng Xcode 4.5. 1 cho iOS sử dụng trình biên dịch Apple LLVM 4.1. – Centurion