Forum: Mikrocontroller und Digitale Elektronik incompatible pointer - Warum?


von ingo (Gast)


Lesenswert?

Hallo,

folgendes Problem:

ich habe dieses struct:


typedef struct menu_actual_position  {
  uint8_t layer;
  uint8_t oldlayer;
  uint8_t position;
  uint8_t oldposition;
  uint8_t menu_active;
  uint8_t left_window;
  uint8_t right_window;
  void    *prevouis_addr_menu;
}menu_act_pos;


und diese functions die in meiner Headerdatei stehen:

void menu_init(menu_act_pos *pos_dummy);

und diese Deklaration plus funktionsaufruf:

menu_act_pos *nav;
menu_init(&nav);


und das ganze wird an diese Funktion geschickt:


void menu_init(menu_act_pos *pos_dummy)  {
  uint16_t k,i;
  menublankpara.color = white;
  menublankpara.content = menublank;
  menublankpara.frame = noborder;
  menublankpara.startx = 0;
  menublankpara.starty = 11;
  menublankpara.endx = 127;
  menublankpara.endy = 63;
  i = sizeof menublank/sizeof (uint8_t);
  for (k = 0; k<=i; k++)  {
    menublank[k] = 0x00;
  }
  ks0108_frame(&menublankpara);
  pos.layer = pos_dummy->layer;
  pos.left_window = pos_dummy->left_window;
  pos.menu_active = pos_dummy->menu_active;
  pos.position = pos_dummy->position;
  pos.right_window = pos_dummy->right_window;
}


nun bekomme ich aber die Warnung:

passing argument 1 of 'menu_init' from incompatible pointer type


Warum?
dass gleichsetzen in der Funktion klappt nämlcih auch nicht.



Gruß

Ingo

von Andreas K. (a-k)


Lesenswert?

Formelles Problem: menu_init(nav);
Inhaltlich: So geschrieben zeigt "nav" auf nichts, und es kracht.

von ingo (Gast)


Lesenswert?

ich übergebe doch &nav?!

von let (Gast)


Lesenswert?

Ist ja auch richtig, nur die Zeile darüber stimmt dann nicht.
Du brauchst an der Stelle keinen Zeigen sondern ein 'echtes'
Datenobjekt.

Also so:
menu_act_pos nav;
menu_init(&nav);

von Stefan (Gast)


Lesenswert?

mit &nav übergibst Du die Adresse Deines Pointers aber nicht den Pointer 
selbst!

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.