Mal wieder struct (pic18)

OP #2182767
Lesenswert?
• ▲
▼
Hallo!

Ja, ich habe lange die Suchfunktion benutzt, aber bekomme nun langsam 
Gehirnerweichung.

Im Programm ist eine simple struct deklariert, die Werte sollen gleich 
mit zugewiesen werden:

typedef struct button{
  unsigned int x1;
  unsigned int y1;
  unsigned int x2;
  unsigned int y2;
};

struct button neu={100,100,150,125};

void zeichne(void){
  GLCD_Rectangle(neu.x1,neu.y1,neu.x2,neu.y2);
}

Aus mir unerklärlichen Gründen sind die Werte aber nicht gesetzt. Mit 
folgender etwas mühsamerer  Methode funktioniert es aber:

typedef struct button{
  unsigned int x1;
  unsigned int y1;
  unsigned int x2;
  unsigned int y2;
};

struct button neu;

void zeichne(void){
  neu.x1=100;
  neu.y1=100;
  neu.x2=150;
  neu.y2=125;
  GLCD_Rectangle(neu.x1,neu.y1,neu.x2,neu.y2);
}

Alles scheint lehrbuchmäßig richtig zu sein, aber irgendwo ist der Wurm 
drin. Weiß jemand einen Rat?

Verwendet wird MPLAB IDE v8.50 mit C18.

Dank für Hilfe!

ulf.
Persönliche Seite #2182782
Lesenswert?
• ▲
▼
Ulf Hsm. schrieb:
> typedef struct button{
>   unsigned int x1;
>   unsigned int y1;
>   unsigned int x2;
>   unsigned int y2;
> };
>
> struct button neu={100,100,150,125};

Was macht da das typedef? Der Compiler nörgelt nicht?

Wenn Du typedef benutzen willst, dann darf das so aussehen:
1
typedef struct
2
{
3
  unsigned int x1;
4
  unsigned int y1;
5
  unsigned int x2;
6
  unsigned int y2;
7
} button_t;
8

9
button_t neu = {100, 100, 150, 125};

Ob das des Problems Ursache ist, vermag ich natürlich nicht zu sagen.
OP #2184363
Lesenswert?
• ▲
▼
Das Problem scheint gelöst zu sein:

Die Strukturvariable kann man zwar außerhalb einer Funktion zuweisen, 
aber die Definition mit Wertzuweisung muß innerhalb einer Funktion 
erfolgen. So jedenfalls funktioniert es nun:


struct button{
  unsigned int x1;
  unsigned int y1;
  unsigned int x2;
  unsigned int y2;
};



void zeichne(void){
 struct button neu={100,100,150,125};
 GLCD_Rectangle(neu.x1,neu.y1,neu.x2,neu.y2);
}


Rätselhaft ist mir nur, warumm der Compiler zwar die Strukturvariable 
zugewiesen, aber die Werte ohne Fehlermeldung ignoriert hat.


ulf.

Antwort schreiben

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.

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.