Hallo,
ich programmiere mit Keil µVision. Ich habe eine C-Datei, in der neben
einer Funktion auch eine Tabelle steht. Die Tabelle steht aus Gründen
der Übersichtlichkeit am Ende der Datei, weil die Tabelle sehr groß ist.
Ich greife in der Funktion auf die Tabelle zu, daher habe ich die
Tabelle ganz oben deklariert. für den Zugriff benutze ich den
sizeof-Operator. Beim Kompilieren warnt mich der Compiler, dass der
sizeof-Operator 0 zurückliefert.
das ganze sieht etwa so aus (schreibe leider von einem anderen Rechner,
daher kein Originalcode):
1 | struct {
|
2 | int intDemo;
|
3 | char charDemo;
|
4 | } stDemo;
|
5 |
|
6 | extern stDemo Tabelle[]; //extern wg. Deklaration
|
7 |
|
8 | void function(void) {
|
9 | char Count;
|
10 |
|
11 | Count = 0;
|
12 |
|
13 | do {
|
14 | <Zugriff auf Daten>
|
15 | Count++;
|
16 | } while(Count < sizeof(Tabelle) / 3); //durch drei teilen, weil
|
17 | //stDemo 3 Bytes groß ist
|
18 | }
|
19 |
|
20 | ...
|
21 | <weitere Funktionen>
|
22 | ...
|
23 |
|
24 | stDemo Tabelle[] = {
|
25 | 0x00, 0xFFFF,
|
26 | 0x01, 0xFFFE,
|
27 | 0x02, 0xFFFD,
|
28 | <...>
|
29 | 0xFD, 0x0002,
|
30 | 0xFE, 0x0001,
|
31 | 0xFF, 0x0000,
|
32 | };
|
Eine Möglichkeit wäre, bereits bei der Tabellendeklaration die Größe
einzutragen, aber dann muss ich immer an zwei Stellen ändern.
Hoffe, ich konnte mein Problem deutlich machen :-)
Hat jemand eine Idee, wie ich das lösen kann, so dass die Tabelle am
Ende steht, und der sizeof-Operator trotzdem die richtige Größe ausgibt?
Danke
Ralf