Hallo,
ich habe ein kleines Problem mit einer Struktur. Die neuen Werte werden
zwar in die Struktur übernommen, allerdings bleibt das extern global
definierte Array leer.
Die Struktur wird später noch vergrößert, geplant sind ca. 1000
unterschiedliche Parameter und um die 10 Felder.
Hier mal mein Code:
1
externunsignedintnewValue[MAX];//definiert in global.h
Ich jedenfalls nicht, weil ich keine Ahnung habe, was du vorhast
und was du dir erwartest.
Außerdem macht das Programm einen etwas lückenhaften Eindruck,
ebenso wie die Beschreibung, was es machen soll.
Ich lese über die serielle Schnittstelle Daten von einem PC ein. Diese
Daten haben unterschiedliche min und max Werte, sowie noch andere
Parameter. Die habe ich aber zum Testen erstmal rausgelassen.
Die min und max Prüfung wird nach dem Empfang der Daten ausgeführt und
da ich die Struktur nicht dauerhaft im Speicher haben will, sollen die
aktuellen Daten in ein globales Array ausgelagert werden. Aus diesem
Array werden andere Funktionen usw. gefüttert.
I. table muss ein Array of Struct sein, es ist nur ein Struct
II. Statische Initializer müssen konstant sein, sind sie hier aber
nicht. Auch für "extern const unsigned int newValue" kann das nicht
gehen.
Du willst sowas?
1
externunsignedintnewValue[MAX];//definiert in global.h
2
3
struct
4
{
5
unsignedintmin;
6
unsignedintmax;
7
unsignedint*pvalue;
8
}
9
table[]=
10
{
11
{0,300,&newValue[0]},
12
{1,10,&newValue[1]},
13
{0,32767,&newValue[2]},
14
{100,1000,&newValue[3]}
15
};
16
17
voidCheckIt(unsignedintid,unsignedintval)
18
{
19
if(val>=table[id].min&&val<=table[id].max)
20
{
21
*(table[id].pvalue)=val;
22
}
23
}
Möglicherweise table als "static const ..." wenn es nicht global
sichtbar sein soll und die Werte sich nicht ändern wie im Beispiel.