08.06.2011, 10:08
Hallo zusammen,
ich muss in auf eine dll zugreifen, die u.a. eine Funktion mit folgendem Prototyp enthält:
typedef struct { union { BYTE 1[12]; struct { BYTE 2; BYTE 3[5]; BYTE 4[2]} c} b; BYTE 5} a;
Wenn meine C Kenntnisse richtig sind, dann ist eine Union etwas ähnliches wie eine struct. Mit dem Unterschied, dass eine struct für jedes Element die entsprechende Speichergröße allokiert, eine Union nur die des größten Elements und der Programmierer hat darauf zu achten dass er die Bits im Speicher richtig interpretiert.
Folglich würde ich auf ein Element der struct c nicht wie auf ein Cluster-, sondern wie auf ein Array-Element zugreifen. Und wenn die Union mit struct c befüllt ist nur die ersten 8 Array-Elemente lesen.
Oder baue ich mir in meinem Cluster a, das ich an den dll-Knoten hänge, genau die Struktur nach, wie sie im Prototyp steht? Probieren kann ich es leider (noch) nicht, da die Hardware zur dll noch nicht fertig ist.
Hier mal die beiden Möglichkeiten, von denen ich nicht weiß welche, oder ob überhaupt eine dabei ist die richtig ist.
Danke und Gruß
Dommas
PS: Wieso ist auf dem snippet nur die Hälfte sichtbar?!
ich muss in auf eine dll zugreifen, die u.a. eine Funktion mit folgendem Prototyp enthält:
typedef struct { union { BYTE 1[12]; struct { BYTE 2; BYTE 3[5]; BYTE 4[2]} c} b; BYTE 5} a;
Wenn meine C Kenntnisse richtig sind, dann ist eine Union etwas ähnliches wie eine struct. Mit dem Unterschied, dass eine struct für jedes Element die entsprechende Speichergröße allokiert, eine Union nur die des größten Elements und der Programmierer hat darauf zu achten dass er die Bits im Speicher richtig interpretiert.
Folglich würde ich auf ein Element der struct c nicht wie auf ein Cluster-, sondern wie auf ein Array-Element zugreifen. Und wenn die Union mit struct c befüllt ist nur die ersten 8 Array-Elemente lesen.
Oder baue ich mir in meinem Cluster a, das ich an den dll-Knoten hänge, genau die Struktur nach, wie sie im Prototyp steht? Probieren kann ich es leider (noch) nicht, da die Hardware zur dll noch nicht fertig ist.
Hier mal die beiden Möglichkeiten, von denen ich nicht weiß welche, oder ob überhaupt eine dabei ist die richtig ist.
Danke und Gruß
Dommas
PS: Wieso ist auf dem snippet nur die Hälfte sichtbar?!