Forum: Mikrocontroller und Digitale Elektronik Eine C Frage bzgl strct->pointer->übergabe von Werten


von Tobias E. (doenges2)


Lesenswert?

Hallo,

ich möchte ganz gerne ein Menü schreiben und habe mir r hierfür ein 
struct gebaut:

typedef struct menue_var  {
  uint8_t     layer;
  uint8_t     position;
  wdwpara_t    para;
  const char           name[];
}menu_t;

alle punkte laufen bis auf den letzen "name[]";
Hier möchte ich den Menünamen (welche Überraschung) festlegen.

ich erzeuge noch ein Array von diesem struct (namens mainmenu) davon und 
übergebe das Array dann so an eine Funktion:

build_menu_entry(&mainmenu);


die passende funktion sieht dann so aus:


void build_menu_entry (menu_t *menu)  {
  uint8_t i;
  menu->para.color = white;
  menu->para.frame = noborder;
  menu->para.startx = 0;
  menu->para.starty = 0;
  ks0108_textframe(menu->name,&font5x7para,&menu->para);
}



die wiederum dann alle daten an eine andere Funktion übergeben soll:

void ks0108_textframe(uint8_t ch[],fonts_t *font, wdwpara_t *dummy);




Nun bekomme ich aber folgende Fehlermeldungen:

in der Funktion build_menu_entry heißt sie zum einen:

passing argument 1 of 'ks0108_textframe' discards qualifiers from 
pointer target type



keine Ahnung was der meint?

die 2 Fehlermeldung ist noch diese:

Fehler:
        invalid use of flexible array member

bzgl der Zeile:

  mainmenu[0].name = "favorites left";



Hat jemand eine Ahnung?

Danke schon mal im voraus.


Tobias

von Uhu U. (uhu)


Lesenswert?

const char name[];

ist dasselbe wie

    const char *name;

Reicht der Hinweis?

von Tobias E. (doenges2)


Lesenswert?

Vielen Dank,

habe mich jetzt damit abgefunden, daß ich es über const "definiere" und 
dann die Variabel von const beim anlegen des arrays[x].name angebe!

Nicht schön, aber wat mut dat mut....anscheinend.


Gruß und Danke

Tobi

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.