Forum: Mikrocontroller und Digitale Elektronik Verwendung Struktur um Parameter zu beschreiben


von Samuel (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.