Hallo, ich habe eine Parameterdatenbank in c auf meinem Mikrocontroller folgendermassen implementiert: /*--------------------------------------------------------------*/ /*Deklaration parameter signed short param1; signed short param2; .................... signed short paramn; /*definition Struktur typedef struct{ unsigned char type; void *ptr; }comm_struct; comm_struct comm_tab[] = { { TYPS16 , & param1}, { TYPS16 , & param2}, ......................................... {....................................paramn}, }; /*Ich beschreibe nun die Parameter über die Struktur mit folgende Zeile:*/ *(unsigned short *)comm_tab[index]=val; /*--------------------------------------------------------------*/ Soweit so gut funktioniert alles. Nun ist es allerdings so, dass ich aus bestimmten gründen in der Struktur comm_struct comm_tab[] nur 256 Adressen für Parameter verwalten kann. da ich aber mehr Parameter habe benötige ich 3 dieser Tabellen. Ich habe mir folgendes gedacht: /*----------------------------------------------------------------*/ unsigned char page comm_struct comm_tab[0][] = { { TYPS16 , & param1}, { TYPS16 , & param2}, ......................................... {....................................paramn}, }; comm_struct comm_tab[1][] = { { TYPS16 , & paramu}, { TYPS16 , & paramv}, ......................................... {....................................paramw}, }; comm_struct comm_tab[2][] = { { TYPS16 , & paramx}, { TYPS16 , & paramy}, ......................................... {....................................paramz}, }; /*Und die Beschreibung der Parameter folgendermassen:*/ *(unsigned short *)comm_tab[page][index]=val; /*----------------------------------------------------------------*/ Obige Überlegung erzeugt bei meinem Compiler aber folgende Fehlermeldung: 342, 28 Missing array size for higher dimensions of multidimensional array. 371, 28 Missing array size for higher dimensions of multidimensional array. Was mache ich falsch bzw. hat jemand eine elegantere Idee das Problem zu lösen. Danke! Gruß Samuel
Samuel wrote: > Was mache ich falsch Das geht so nicht. Du kannst die erste Dimension eines mehrdimensionalen Arrays weglassen, aber nicht alle anderen. > bzw. hat jemand eine elegantere Idee das Problem zu > lösen.
1 | comm_struct comm_tab_0[] = { |
2 | { TYPS16 , & param1}, |
3 | { TYPS16 , & param2}, |
4 | .........................................
|
5 | {....................................paramn}, |
6 | };
|
7 | |
8 | comm_struct comm_tab_1[] = { |
9 | { TYPS16 , & paramu}, |
10 | { TYPS16 , & paramv}, |
11 | .........................................
|
12 | {....................................paramw}, |
13 | };
|
14 | |
15 | comm_struct comm_tab_2[] = { |
16 | { TYPS16 , & paramx}, |
17 | { TYPS16 , & paramy}, |
18 | .........................................
|
19 | {....................................paramz}, |
20 | };
|
21 | |
22 | comm_struct* comm_tab[] = |
23 | { comm_tab_0, comm_tab_1, comm_tab2 }; |
Zugriff mit genau der gleichen Syntax wie bei einem 2D-Array.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.