Frage zu Bitfeldern
-
Hallo,
ich habe mir folgendes Bitfeld definiert:
struct RIUser { unsigned Movie : 15; unsigned Rating : 3; unsigned SFloatWhole : 3; unsigned SFloatDecimal : 17; };Dummerweise ist so ein Feld immer 8 Byte groß, egal was ich da nun Eintrage. Kann es sein, dass es da eine minimale Grenze gibt (bei 8x8 bit)? Wie könnte ich sowas umgehen? Ich würde natürlich schon gern obiges Struct in 5 byte unterbringen.
Pat
-
das kommt vom data aligment.
du könntest mal folgendes versuchen:#pragma pack(push) #pragma pack(1) struct RIUser { unsigned Movie : 15; unsigned Rating : 3; unsigned SFloatWhole : 3; unsigned SFloatDecimal : 17; }; #pragma pack(pop)das könnte evtl. funktionieren.
-
hat nicht funktioniert.
Allerdings hab ich mir so eine Erklärung schon gedacht. Auf 4 byte komm ich runter, wenn das struct klein genug ist.
Schade. Trotzdem danke!
Pat
-
schon mal #pragma pack(1) probiert?

-
Ja, wurde doch oben vorgeschlagen.
-
ach mist, das hab' ich nicht gesehen

-
Jetzt funktioniert es lustigerweise. Danke!!
-
mal ganz davon abgesehen: du solltest dich niemals darauf verlassen, wieviel speicher dein compiler für bitfields benutzt. wenn du unbedingt alles in 5 bytes quetschen musst, dann solltest du das mit shifts und bitoperationen, also ohne bitfelder, selbst implementieren.
