Forum: Compiler & IDEs Probleme mit struct


von Stiefei (Gast)


Lesenswert?

Hallo,

Mein Compiler macht immer diese Fehlermeldung:
../main.c:34: error: expected ':', ',', ';', '}' or '__attribute__' 
before '=' token

Nur ich komm nicht drauf, wo mein Fehler ist, schau dieses Konstrukt 
schon seit einiger Zeit an. Vll. Kann mir wer helfen was ich falsch 
gemacht habe!

Grüße Stiefei
1
struct PARAMETER             
2
{
3
float SOLLTEMP = 0;          
4
unsigned int  SOLLMINUTEN = 0;      
5
};
6
7
struct PARAMETER PARAMETERLISTE[10];

von MAD (Gast)


Lesenswert?

Da fehlt der
1
typedef
.
Also:
1
typedef struct PARAMETER {
2
float SOLLTEMP = 0;          
3
unsigned int  SOLLMINUTEN = 0;      
4
} parameter_t;    /* Der bessere Stil */
5
6
parameter_t PARAMETERLISTE[10];
Dann sollte es funzen.

von Timmo H. (masterfx)


Lesenswert?

Du darfst in C in der Definition der Structur keine Werte eintragen. Das 
macht man bei der deklaration
1
struct PARAMETER{
2
  float solltemp;
3
  unsigned int  SOLLMINUTEN;
4
};
5
6
struct PARAMETER PARAMETERLISTE[10] = {0,0};

von B. S. (bestucki)


Lesenswert?

typedef ist nicht notig. Das benutzt du nur, wenn du nicht jedesmal 
struct schreiben willst. Das Problem ist, dass du die Member bei der 
Deklaration auf einen bestimmten Wert setzen willst, was aber nicht 
möglich ist.

von Peter II (Gast)


Lesenswert?

MAD schrieb:
> Da fehlt dertypedef

nein bestimmt nicht.

es gibt keine Initialisierung der Members
1
struct PARAMETER             
2
{
3
float SOLLTEMP;          
4
unsigned int  SOLLMINUTEN;      
5
};
6
7
struct PARAMETER PARAMETERLISTE[10];

von MAD (Gast)


Lesenswert?

Nachtrag:

Das mag Dein Compiler vermutlich nicht:
1
float SOLLTEMP = 0;
2
3
/* aendern in */
4
5
float SOLLTEMP;

von B. S. (bestucki)


Lesenswert?

be stucki schrieb:
> Deklaration

Ich meinte natürlich Definition...

von Karl H. (kbuchegg)


Lesenswert?

Peter II schrieb:

> es gibt keine Initialisierung der Members

zumindest nicht in der Defintion des struct Datentyps.
Wenn dann tatsächlich eine Variable von diesem Typ angelegt wird, kann 
man natürlich eine Initialisierung angeben

(Nur der Vollständigkeit halber. Sonst glaubt Steifei noch, man könnte 
da überhaupt nichts initialisieren. Das du das weißt, ist mir schon 
klar)

von Stiefei (Gast)


Lesenswert?

1
typedef struct PARAMETER {
2
float SOLLTEMP;          
3
unsigned int  SOLLMINUTEN;      
4
} parameter_t;   
5
6
parameter_t PARAMETERLISTE[10];

So jetzt kommt diese Fehlermeldung nicht mehr. Danke Schonmal!

Grüße

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.