mikrocontroller.net

Forum: Compiler & IDEs Werte aus Struct-Array auslesen


Autor: Steffffan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
habe das zwar schon unter einem anderen Topic als Nachsatz im 10ten 
Reply gefragt, aber da wird das mangels aussagekräftigem Betreff sicher 
niemand (vor allem die Nachwelt...) finden.

Deshalb nochmal: Es scheint mir, als würde beim Auslesen der Daten eines 
Struct-Arrays immer eine 0 zurückgegeben. Also
if(myStructArray[i].someValue == 1)
{
...
}

geht immer schief.

Kennt jemand das Problem?

P.S. Falls das irgendwie gegen Forenreglen (Mehrfachposting) oder den 
guten Stil verstößt, bitte löschen, habe in den besten Absichten 
gepostet.

MfG Steffffan

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein "currentTask" aus dem anderen Thread - ist das als "volatile" 
deklariert?

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

Bewertung
0 lesenswert
nicht lesenswert
Steffffan wrote:

> Deshalb nochmal: Es scheint mir, als würde beim Auslesen der Daten eines
> Struct-Arrays immer eine 0 zurückgegeben. Also

Das wäre dann ein schwerer Compiler-Fehler, den mit Sicherheit
schon jemand vor dir gefunden hätte. Solche Fehler fallen bei
der Entwicklertruppe des Compilers sofort auf und der Compiler
verlässt nie das 'Labor'.

Du wirst also irgendeinen anderen Fehler im Programm haben.

Autor: Steffffan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Dein "currentTask" aus dem anderen Thread - ist das als "volatile"
> deklariert?

Das i oder der currentTask ist volatile und natürlich spuckt die 
Watchlist an der entsprechenden Stelle eine 3 aus. Trotzdem danke für 
den Hinweis.

> Du wirst also irgendeinen anderen Fehler im Programm haben.

Glaub ich sofort, deshalb frage ich nach schmerzlich gemachten 
Erfahrungen anderer Progger, wie ein vergessenes volatile ;-)

Mit memcopy hat es einmal sogar geklappt, aber nach dem nächsten 
neucompilieren auch schon wieder nicht...

Wenn man die Compileroptimierungen abschaltet funktioniert es auch 
wieder, aber in der gcc-Doku steht, man muss wenigstens O1 machen, damit 
die delay.h benutzt werden kann.

Autor: Steffffan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lösung:

das volatile war schon eine gute Idee:

Man muss auch alle Member des structs volatile machen! (Und das, obwohl 
ich die Member ständig im Quellcode benutze, tolle "Optimierung"!)

Vielen Dank für den Input, war ein guter Tip!

Autor: Steffffan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, falsche Entwarnung... Hat wieder nur "zufällig" funktioniert. 
Einmal neu kompiliert und schwups ist wieder alles hinüber.

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.