PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pointer auf Struct von Byte-Array



Bumbum
31.05.2013, 13:12
Hallo,ich habe eine Frage. Es geht um einen Schönheitsfehler. Ich habe (im groben) folgendes Programm:
struct Data{ U8 Data1; U16 Data2; //...};void workOnData (struct Data *receivedData){ //...}int main (void){ U8 Buffer[20]; U8 offset; receiveData (&Buffer[0], &offset); workOnData (&Buffer[offset]); return (0);}Ich empfange den Inhalt für die Struktur "Data" via RS232 in ein das Byte-Array Buffer. Der Offset, ab wann die Daten für die Struktur stehen ändert sich und ich erhalte es in der Variable Offset.Den Pointer auf den Start der Daten für die Struktur übergebe ich dann der Funktion workOnData. Das ganze funktioniert, allerdings erhalte ich von AVR-Studio folgende Fehlermeldung:warning: passing argument 1 of 'workOnData' from incompatible pointer typeDie Ursache für die Warnung ist wohl der unterschiedliche Pointer-Typ. Ich bin mit C-Pointern nicht so richtig fit. Gibt es eine Möglichkeit diese Warnung zu vermieden?Viele GrüßeAndreas

danimath
31.05.2013, 15:06
Moin Andreas,

probier's mal mit casten:


workOnData ((struct Data *) &Buffer[offset]);


viele Grüße
Andreas

Bumbum
31.05.2013, 16:01
Hallo danimath,

das funktioniert einwandfrei. Vielen Dank!

Die Warnung ist weg, und der Code funktioniert genauso wie vorher.

Endlich ist auch das nervige Problem weg, wenn ich nach dem compilieren via F4 zum ersten Fehler springen wollte. Meisstens ist er dann zur Warnung gesprungen.

Viele Grüße
Andreas