[solved] enum werte
-
Hallo Zusammen,
ich habe einen enum deren Werte ich selber zugewiesen habe:
enum _color{ undefined = 0, white=1, black=2, red=4, green=8, blue=16, pink=32, brown=64, grey=128}; typedef enum _color color ;
So jetzt, in meinem code kann ich nach bit reihenfolge der empfangenen color byte entscheiden um welche farben es sich handelt:
color* ptr = malloc(sizeof(color)*8) ; unsigned short i=0 ; for(i=0 ; i < 8 ; i++){ if(mask_bit(color_byte,i)){ // wenn der i.th bit auf 1 ist: switch(i){ case 1: *ptr = white ; break; /* fuer die andere bits */ /* ab hier werden die werte nicht richtig zugewiesen */ case 5: *ptr = green ; case 7: *ptr = grey ; default: break; } } ptr++ ; }
Die Farbbits, die auf 1 gesetzt sind werden durch diesen Block erkannt. Allerdings werden die Werte ab "green" nicht richtig zugewiesen.
Wenn ich diese mit Eingabe:color colors[] ={ white, black, red, green, blue, pink, brown, grey} ;
die ausgabe wird zu:
color has value of:1
color has value of:2
color has value of:4
color has value of:8
color has value of:0 /* ab hier kriege ich nur null sollte 16
color has value of:0 * 32
color has value of:0 * 64
color has value of:0 128 sein */Es gibt keine seg faults.. also indem hinsicht es kann nicht dyn.
speicherverwaltungsproblem sein.. Damit ich alle Fehlerquellen ausschliesse:
Zahlen >16 fuer enum sind doch zugellasen, oder? Koennt ihr irgendwo den fehler
sehen?Danke & Gruss,
[solved]
ok, hab gerade gemerkt dass die ptr post inkrement nicht fuer jeden schleifendurchgang gemacht werden soll, sonder nur dann wenn ein bit von
farbe wirklich gefunden ist...hmm.. das war zu schnell von mir.. sorry