Hallo Leute,
ich bin ein ziemlicher Neuling in C und bin hier über ein Problem
gestolpert. Vielleicht könnt ihr mir helfen!
Ich habe ein Array aus Structs. Es hat 20 Einträge.
1 | typedef void (*pfunction)(void);
|
2 |
|
3 | typedef struct
|
4 | {
|
5 | uint id;
|
6 | ulong timestamp;
|
7 | ulong delay;
|
8 | uchar count;
|
9 | uchar priority;
|
10 | pfunction function;
|
11 | struct
|
12 | {
|
13 | uchar reload:1;
|
14 | uchar reload_endless:1;
|
15 | uchar reload_after_delay:1;
|
16 | uchar reserved:5;
|
17 | } parameters;
|
18 | } strTaskEntry;
|
19 |
|
20 | strTaskEntry xdata SCHEDULER_HIGH_strTaskList [20];
|
Situation:
Alle Speicherplätze des Array sind bis auf den Letzten mit wichtigen
Einträgen gefüllt.
Ein Eintrag soll zwischen SCHEDULER_HIGH_strTaskList[9] und
SCHEDULER_HIGH_strTaskList[10] geschoben werden. Da hinten ein Eintrag
fehlt (SCHEDULER_HIGH_strTaskList[19]) will ich alle Einträge von
SCHEDULER_HIGH_strTaskList[10] bis SCHEDULER_HIGH_strTaskList[18] um
einen Eintrag Richtung Ende verschieben.
z.B SCHEDULER_HIGH_strTaskList[11] soll den Inhalt (also ein Struct)
vom SCHEDULER_HIGH_strTaskList[10] bekommen.
Ich wollte das so machen:
1 | for ( i2=11; i2!=19; --i )
|
2 | {
|
3 | SCHEDULER_HIGH_strTaskList[i2+1] = SCHEDULER_HIGH_strTaskList[i2];
|
4 | }
|
Aber der Compiler meckert:
error48: can not assign values to aggregates.
Habt ihr eine Idee?