Ich habe eine einen Zeiger auf eine Struktur namens
"received_packets_struct" (ähnlich einer einfach verketteten Liste).
Diese Struktur enthält eine zweite Structur namens "DataPacketStruct"
und einen Zeiger auf die nächste Struktur in der Liste:
1 | struct DataPacketStruct
|
2 | {
|
3 | unsigned char start_byte;
|
4 | unsigned char sender_address;
|
5 | unsigned char receiver_address;
|
6 | unsigned char msg_type;
|
7 | unsigned char LSB;
|
8 | unsigned char MSB;
|
9 | unsigned char crc;
|
10 | };
|
11 |
|
12 | struct received_packets_struct
|
13 | {
|
14 | struct DataPacketStruct value;
|
15 | struct received_packets_struct *next;
|
16 | };
|
Nun möchte ich eine Funktion "append" schreiben die als Paramter einen
Zeiger auf "received_packets_struct" sowie auf "DataPacketStruct"
erhält.
1 | struct DataPacketStruct new_packet = {1, 1, 1, 2, 2, 2, 3};
|
2 | struct received_packets_struct *start_elem = NULL;
|
3 |
|
4 | append(&start_elem, &new_packet);
|
Mein Problem ist der Zugriff auf die Struktur DataPacketStruct innerhalb
received_packets_struct. Wie mache ich das richtig?
1 | void append(struct received_packets_struct **start_elem, struct DataPacketStruct *new_elem)
|
2 | {
|
3 | struct received_packets_struct * tmp;
|
4 | tmp = *start_elem;
|
5 | if(*start_elem == NULL)
|
6 | {
|
7 | if((tmp = malloc(sizeof(struct received_packets_struct))) == NULL)
|
8 | {
|
9 | printf("Speicher voll");
|
10 | return;
|
11 | }
|
12 | tmp->value->start_byte = new_elem->start_byte; //<- hier steckt das Problem "Left operand of -> has incompatible type 'struct DataPacketStruct'."
|
13 |
|
14 | tmp->next = NULL;
|
15 | *start_elem = tmp;
|
16 | }
|
17 | ...
|