mikrocontroller.net

Forum: PC-Programmierung structs direkt Werte zuordnen, c++


Autor: cler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
struct abc
{
  int x;
  int y;
};

das definiert die Struktur struct abc. Damit hat man noch keine 
Variable. Die Variable erzeugt man erst danach.
struct abc dieVariable = { 8, 5 };

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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;

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder noch etwas eleganter und mehr C++-like:
struct S {
    S()
    : x(0)
    {}
    int x;
 } x;

Autor: Hanswurst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.