Tôi đã tự hỏi nếu có một chỉ thị GCC C Compiler cho phép tôi xác định thứ tự bit để đóng gói của một cấu trúc? Một cái gì đó để những cái tên như:Làm thế nào để thực thi thứ tự bit struct với trình biên dịch GCC?
#pragma bit_order left
Lý do cho một nhu cầu như vậy là tôi có cơ cấu như sau:
struct {
union {
unsigned char BYTE;
struct {
unsigned char B0: 1;
unsigned char B1: 1;
unsigned char B2: 1;
unsigned char B3: 1;
unsigned char B4: 4;
}BIT;
}ITEM;
} myStruct;
Với cấu trúc này, tôi muốn trình biên dịch để đóng gói nó theo cách này:
Bit order: | 7 6 5 4 3 2 1 0 |
Label: |B0 B1 B2 B3 B4 B5 B6 B7 |
Thay vì cách GCC làm nó:
Bit order: | 7 6 5 4 3 2 1 0 |
Label: |B7 B6 B5 B4 B3 B2 B1 B0 |
Tôi đang đối phó với MCUs có tệp tiêu đề lớn có cấu trúc tính toán bù trừ bit theo địa chỉ phần cứng được chỉ định. Tôi hy vọng rằng có một chỉ thị trình biên dịch trong trình biên dịch GCC C mà không trao đổi thứ tự bit cho tôi trước khi tôi cố gắng lật tất cả các lĩnh vực trong các nhà sản xuất cung cấp tập tin.
kích thước và trình tự, trình biên dịch superset https://stackoverflow.com/questions/1490092/cc-force-bit-field-order-and-alignment làm 'tập hợp con làm việc packed': https://stackoverflow.com/questions/1756811/does-gccs-attribute-packed-retain-the-original-ordering –