Verwendung Struktur um Parameter zu beschreiben

Gast #1117629
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
#1117672
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.