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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren