Hallo Hopsel,
Wieso arbeitest du dann nicht mit einer solchen Struktur?
... und einem typisierten Zeiger auf diese Struktur anstatt einem void* ?
Die Frage lag mir auch auf der Zunge.
Es ist in C durchaus möglich Zeiger zu inkrementieren bzw. bitweise zu erhöhen. [1]
Nein, nicht bitweise. C kann als kleinste Einheit ein Byte (char) adressieren. Einzelne Bits kriegt man daraus durch Maskierungsoperationen (logisches AND/OR/XOR).
Ja, ich weiß: In structs kann man Felder definieren, die kleiner als ein Byte sind und nicht einmal an Bbytegrenzen beginnen bzw. enden müssen:
typedef struct
{ int status:3;
int command:3;
int count:12;
} CTRLWORD;
Damit deklariere ich eine gepackte Struktur von insgesamt 16bit (1 WORD) Länge, wovon ich die untersten 3bit als status, die nächsten 3bit als command und die restlichen 12bit als count ansprechen kann, ohne im Sourcecode noch mit aufwendigen Bitoperation jonglieren zu müssen.
Das ist aber AFAIK in C das einzige Zugeständnis an Bit-Adressierung, und es wird vom Compiler auch wieder in eine Kombination aus BYTE/WORD/DWORD-Zugriff und Maskierung übersetzt. Man könnte das also auch "zu Fuß" programmieren, aber so ist es komfortabler.
Schönen Abend noch,
Martin
Schildkröten können mehr über den Weg berichten als Hasen.