Hallo Gemeinde,
vielleicht zunächst vorweg: Die Frage dreht sich nicht um den GCC
sondern den Keil C51 Compiler...
Ich habe ein umfangreiches struct mit Bitfeldern und einer Gesamtgröße
von 10 Byte.
1 | typedef struct {
|
2 | unsigned int header1 :4;
|
3 | unsigned int header2 :4;
|
4 | unsigned int data1 :4;
|
5 | unsigned int parity :1;
|
6 | unsigned int state :1;
|
7 |
|
8 | ...usw.
|
9 |
|
10 | } SensorFrame;
|
So habe komfortabel Zugriff auf die einzelnen Bestandteile des
Datenpaketes.
Für die Übertragung dieses Paketes benötige ich aber jedes einzelne Bit.
Theoretisch würde ich also gern sowas machen, wie:
1 | for(int i=0; i<sizeof(SensorFrame); i++) {
|
2 |
|
3 | currentBit = ((frame >> i) & 0x01);
|
4 |
|
5 | ...
|
6 | }
|
Aber das geht afaik nicht, weil nicht garantiert ist, dass die Daten des
struct wirklich lückenlos im Speicher hintereinanderliegen.
Hat jemand eine Idee, wie einerseits eine komplexe Datenstruktur
aufbauen kann, die einfach zu handhaben ist und andererseits die
möglichkeit bietet, schnell alle bits von vorn bis hinten
durchzublättern?
Würde mich über eure Vorschläge und Ideen sehr freuen.
Danke, Andre´