PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bitfeld in structur ablegen



brother zee
05-04-2005, 13:42
Hallo !
Ich habe da ein problem mit bit-feldern.Ich möchte ein Bitfeld in einer
Strucktur speichern und mein Compiler macht das irgendwie nicht

Ich hatte mir das so vorgestellt

typedef struct bitfeld{
unsigned int wert1:1;
unsigned int wert2:2;
unsigned int wert3:3;
...
}T_bitfeld;

T_bitfeld bit1={1,1,0}

Ich will dann dieser Bitfeld in einer Structur hinterlegen

typedef struct struktur{
char name[];
T_bitfield flags;
}T_strucktur;

T_strucktur strukt1{"Irgend ein Name",bit1};

Ist da irgendein Kapitaler Denkfehler drin??
Wenn mir einer weiter Helfe könnte wäre Klasse.

CU Brother zee

jeebee
05-04-2005, 16:59
typedef struct struktur{
char name[];
T_bitfield flags;
}T_strucktur;

T_structur strukt1{"Irgend ein Name",bit1};


also wenn das aus dem Quellcode kopiert ist, ists kein Wunder dass nichts geht...

Joghurt
05-04-2005, 21:26
Davon abgesehen ist bei dir dann wert1 1 bit, wert2 2bit und wert3 3 bit lang.

brother zee
06-04-2005, 08:54
Das sollte nur ein allgemeines bsp sein und war nicht aus dem quellcode.

Hab jetzt selbst rausgefunden woran es lag Bitfelder haben keine adressen!

deswegen konnte man das so nicht machen wenn man über eine zeiger drauf zugreifen will muss man es in eine union packen und dann auf die nen zeiger
erstellen.

Weis jemand warum bitfelder keine adresse haben?
Weil eigentlich macht der compiler doch eine Speicherzelle voll oder?

CU Brother zee

PS: Hab den Fehler oben mal weg gemacht

Joghurt
06-04-2005, 09:24
Weis jemand warum bitfelder keine adresse haben?1. Weil die CPU nur auf Byteebene und nicht auf Bitebene adressieren kann. Was soll z.B. die Adresse von wert2 sein?
2. Ist es IIRC nicht festgelegt, wie genau die Bits in Bitfeldern abgelegt werden.

brother zee
06-04-2005, 18:37
Das meinte ich nicht!
ich meinte die adresse des gesamten Bitfeldes .
zum beispiel &bit1, da der compiler ja eigentlich eine Speicherzelle füllen muss sollte die dann auch eine adresse haben oder?
Was meinst du mit IIRC das sagt mir so nicht?