Meine Frage bezieht sich auf Blöcke von Speicher einer ungeraden Größe.C++ Zeiger der spezifischen Bitgröße
Lassen Sie uns sagen, ich habe eine struct
wie so erklärt:
typedef struct{
int32 val1 : 29;
int32 val2 : 26;
char val3;
}MyStruct;
Lassen Sie uns bestimmte Bitfelder deklarieren übernehmen in der Struktur wünschens ist (warum wir die Bitfelder verwenden würde, ist nicht die Frage).
Wenn ich einen Zeiger erklären wollte, die zu einem dieser Felder zeigt, könnte ich so etwas wie dies versuchen:
MyStruct test;
int32 *myPtr = &(test.val1);
Abgesehen davon, dass dies erzeugt den Fehler "die Adresse eines Bitfeldes nehmen nicht ist erlaubt ".
Vorausgesetzt, dass wir wollen, gibt es eine Möglichkeit, auf diese Felder auf diese Weise zu zeigen? Ich weiß, dass C++ die Felder wahrscheinlich auf das nächste Byte auffüllen wird (was in diesem Fall 32 Bit wäre).
Da Zeiger auf Bytes "zeigen", würde ich erwarten, dass dieses Verhalten normal ist, da es keine Möglichkeit gibt, die Adresse von etwas zu speichern, das möglicherweise kein "vollständiges" Byte ist. – ereOn
Ich glaube nicht, dass Sie für Bitfeld-Mitglieder, die ihre Bit-Größe angegeben haben, Padding sehen (oder Sie können zumindest nicht sicher sein, welche Bit-Größe es hat - es ist implementation-defined). – RichieHindle
@RichieHindle: In der Tat, und für die meisten kleinen Werte wird es keine Auffüllung geben, da dies genau der Grund ist, warum Bitfelder erfunden wurden. – PlasmaHH