Gast
#951226
Hallo zusammen,
C kann ja von Hause aus keinen Datentyp für ein Bit.
Also nimmt man entweder ein Byte für ein ganzes Bit oder benutzt ein
Byte um acht Bits zu speichern und greift dann etwas komplizierter
darauf zu.
z.B.: status & _BV(sleep)
Die erste Lösung belegt natürlich viel Speicher im Stack, weil alle
Variablen permanent geladen sind.
Dafür ist die Programmausführung effektiver und der Code kleiner.
Bei der zweiten Lösung bleibt der Stack klein, dafür wird das Programm
größer und langsamer.
Für den bitweisen Zugriff auf ein Byte gibt es auch schicke Abkürzungen:
struct test {
byte b0:1;
byte b1:1;
byte b2:1;
byte b3:1;
byte b4:1;
byte b5:1;
byte b6:1;
byte b7:1;
} __attribute__((packed));
oder einfach über defines.
Aber egal wie, die bitweise Methode ist umständlicher (mehr
Operationen).
Kann man generell sagen, welche Methode besser ist?
Habe ich noch etwas übersehen, was man beachten sollte?
Grüße