La mia domanda riguarda l'indicazione di blocchi di memoria di dimensioni dispari.Puntatore C++ di dimensione bit specifica
Diciamo che ho un struct
dichiarata in questo modo:
typedef struct{
int32 val1 : 29;
int32 val2 : 26;
char val3;
}MyStruct;
Supponiamo dichiarando campi di bit specifici nella struct è desiderabile (per questo che avremmo usato i campi di bit non è la domanda).
Se avessi voluto dichiarare un puntatore che punta a uno di quei campi, potrei provare qualcosa di simile:
MyStruct test;
int32 *myPtr = &(test.val1);
Solo che questo produce l'errore "prendere l'indirizzo di un campo di bit non è permesso ".
Supponendo che vorremmo, c'è un modo per indicare questi campi in questo modo? So che C++ probabilmente riempirà i campi con il byte successivo (che in questo caso sarebbe 32 bit).
Poiché i puntatori "puntano" ai byte, mi aspetto che questo comportamento sia normale, poiché non c'è modo di memorizzare l'indirizzo di qualcosa che potrebbe non essere un byte "completo". – ereOn
Non credo che vedrete alcun padding per i membri bitfield che hanno specificato la loro dimensione di bit (o almeno, non potete essere sicuri di averne uno - è definito dall'implementazione). – RichieHindle
@RichieHindle: in effetti, e per la maggior parte dei piccoli valori, non ci sarà il riempimento, poiché questo è esattamente il motivo per cui sono stati inventati i bitfield. – PlasmaHH