www.mikrocontroller.net

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


Autor: Samuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

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},
};

comm_struct* comm_tab[] =
  { comm_tab_0, comm_tab_1, comm_tab2 };

Zugriff mit genau der gleichen Syntax wie bei einem 2D-Array.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.