Forum: Mikrocontroller und Digitale Elektronik Structur mit Bitvariable


von Markus Kempf (Gast)


Lesenswert?

Hi, ich hätte mal eine C frage.
Ich verwende als C compiler den CodeVisionAVR vers. 1.23.7a und hätte
gerne eine structur mit einer Bitvariable darin erstellt.

struct struct_weiche {
        bit status;
  char portmaske;
  char portbaustein;
  }weiche[64];

Laut Hilfe datei des Compilers ist dies angeblich möglich:
"The structure members can be any of the supported Data Types, arrays
of these data types or pointers to them."
Allerdings bekomme ich beim compiliren dann eine Fehlermeldung
"declaration syntax error" für diese Zeile mit der Bitvariable.
Mein frage: Ist es nicht möglich in einer Strucktur eine Bitvariable zu
verwenden?
Danke! Markus

von Markus Kempf (Gast)


Lesenswert?

Hm,
Ich hab ja immer noch die Hoffnung das es jemand giebt der mir was zu
diesem Thema sagen kann und schieb den Topic mal nach oben ;-).
Giebt doch bestimmt jemand der auch in C programiert und einen anderen
C-compiler verwendet, villeicht könnte derjenige mir den gefallen tun
und versuchen eine structur mit bitvariable zu erstellen dann wüsste
ich obs an meinem Compiler liegt oder ob es grundsätzlich nicht
sinnvoll ist, dies zu ermöglichen.
Ich habe inzwischen auch mal die neuste Version CodeVisionAVR
versucht...ging noch immer nicht.
Nochmals Danke!
Gruß Markus

von Dirk Schnitzler (Gast)


Lesenswert?

Probier´s mal mit Gemütlichkeit :)


typedef enum {true=1, false=0} bool;

typedef struct BitField{
    unsigned int Flag1 : 1;
    unsigned int Flag2 : 1;
    unsigned int Flag3 : 1;
}BitField;

BitField TestBitField;

void main (void){
    TestBitField.Flag1 = true;
    TestBitField.Flag2 = false;
    //...
}

Gruß, Dirk.

PS: Das Buch "Programmieren in C" von K&R hilft
bei solchen Problemen besser als deine Compilerhilfe ,)

von Markus Kempf (Gast)


Lesenswert?

Danke Dirk!

Danke in 2facher hinsicht :p. Ich habe auch ein C-Buch hier rumliegen
aber ich war leider so dämlich nur unter "structur" zu lesen. Hätte
ich unter "Bitfelder" gekuckt hätt ich mir den Post sparen können.
:p

"Probier´s mal mit Gemütlichkeit :)"

Das hatte nix mit Ungeduld zu tun das ich nochmal selbst gepostet habe,
aber hättest du den Topic gelesen wenn er inzwischen auf der 2ten Seite
gelandet wäre? ;)

Frohe Weihnachten!
Gruß Markus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.