구조의 패킹을위한 비트 순서를 결정할 수있는 GCC C 컴파일러 지시문이 있는지 궁금합니다.GCC 컴파일러에서 struct 비트 순서를 적용하는 방법은 무엇입니까?
이#pragma bit_order left
이러한 필요성에 대한 이론적 근거는 나는 다음과 같은 구조를 가지고있다
:의 좋아하는 뭔가이 구성에
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;
, 나는 컴파일러 싶습니다은이 방법을 포장하기 :
를Bit order: | 7 6 5 4 3 2 1 0 |
Label: |B7 B6 B5 B4 B3 B2 B1 B0 |
0,123,516을 : GCC는 그것을 수행하는 방법보다는
Bit order: | 7 6 5 4 3 2 1 0 |
Label: |B0 B1 B2 B3 B4 B5 B6 B7 |
규정 된 하드웨어 주소에 따라 비트 오프셋을 계산하는 구조를 가진 거대한 헤더 파일을 가진 MCU를 다루고 있습니다. GCC C 컴파일러에서 컴파일러 지시문을 사용하여 제조업체가 제공 한 모든 필드를 뒤집기 전에 비트 순서 스왑을 수행하기를 기대합니다.
크기와 순서 및 컴파일러 상위 https://stackoverflow.com/questions/1490092/cc-force-bit-field-order-and-alignment'packed' 작업 일부를 수행합니다 https://stackoverflow.com/questions/1756811/does-gccs-attribute-packed-retain-the-original-ordering –