Hallo... Möchte direkt am Anfang der Definition einer Struktur Werte zuweisen. Bsp: typedef struct{ int x=0; }x; leider schreibt mir der avr gcc compiler: expected: ':', etc before '=' token, vom C programmieren weiß ich dass beim int Datentyp irgendwelche Zahlen drinnenstehen, die gerade im RAM draufsind. Wie ist das nun bei einer Struktur bzw. beim avr? salve
Du musst unterscheiden zwischen dem Definieren einer Struktur, als dem Erzeugen der Blaupause welche beschreibt wie eine Struktur grundsätzlich aussieht und dem erzeugen einer Variablen, die genau diese Gestalt hat. Die struct selbst, also die Blaupause, kannst du nicht initialisieren. Die ist ja nur eine Aufbauanleitung. Wohl aber kann man eine Variable initialisieren
1 | struct abc |
2 | {
|
3 | int x; |
4 | int y; |
5 | };
|
das definiert die Struktur struct abc. Damit hat man noch keine Variable. Die Variable erzeugt man erst danach.
1 | struct abc dieVariable = { 8, 5 }; |
Da es hier um C++ geht kann man mit dem default constructor auch dorthin gelangen, ohne jede Instanz einzeln zu initialisieren. Also struct S { S() { x = 0; } int x; } x;
oder noch etwas eleganter und mehr C++-like:
1 | struct S { |
2 | S() |
3 | : x(0) |
4 | {}
|
5 | int x; |
6 | } x; |
1 | struct abc { int x, y; } var = {1,2}; |
so meinst du das wohl, cler... aber das sind zwei schritte so wie int x = 1; die einzige möglichkeit den speicherbereich direkt beim deklarieren der variablen (klasse, oder auch struct-krüppel-klasse (lol)) zu initialisieren besteht in der initialisierungsliste (auf den niedrigeren ebenen wird sich wahrscheinlich nichts ändern). oder falls du es so meinst, dass x in jeder instanz der struktur x den gleichen wert haben soll, dann musst du es static deklarieren.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.