Me preguntaba si existe una directiva GCC C Compiler que me permita determinar el orden de bits para el embalaje de una estructura. Algo de la talla de:¿Cómo imponer el orden de los bits de estructura con el compilador de GCC?
#pragma bit_order left
La justificación de tal necesidad es que tengo la siguiente estructura:
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;
Con esta estructura, me gustaría que el compilador paquete de esta manera:
Bit order: | 7 6 5 4 3 2 1 0 |
Label: |B0 B1 B2 B3 B4 B5 B6 B7 |
en lugar de cómo lo hace GCC:
Bit order: | 7 6 5 4 3 2 1 0 |
Label: |B7 B6 B5 B4 B3 B2 B1 B0 |
Estoy tratando con MCU que tienen enormes archivos de encabezado que tienen estructuras que calculan las compensaciones de bits de acuerdo con las direcciones de hardware estipuladas. Espero que haya una directiva de compilación en GCC C Compiler que haga el intercambio de orden de bits para mí antes de intentar voltear todos los campos en el archivo suministrado por el fabricante.
tamaño y el orden y el compilador superconjunto https://stackoverflow.com/questions/1490092/cc-force-bit-field-order-and-alignment hace 'subconjunto de trabajo packed': https://stackoverflow.com/questions/1756811/does-gccs-attribute-packed-retain-the-original-ordering –