mikrocontroller.net

Forum: Compiler & IDEs Bug im gcc für atmega1280 mit typedef struct


Autor: micro1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich glaube ich habe einen Bug entdeckt im gcc.
Und zwar habe ich folgende Struktur:
typedef struct
{
 char version[20];
 unsigned int druck1;
 unsigned int druck2;
 unsigned int konz1;
 unsigned int konz2;
 unsigned int konz3;
 unsigned int konz4;
 unsigned int vimage;
}parameter;


version wird mit "init" initialisiert.

Wenn ich nun die Adresse übergebe in  ein Modul und folgednes aufrufe
sprintf(out,"Software Version = %s \r\n",&fscontroll->version[0]);
uart0_puts(out);
Gibt es keine korrekte Textausgabe.
Ändere ich aber die Struktur folgednermaßen ab
typedef struct
{
 unsigned int druck1;
 unsigned int druck2;
 unsigned int konz1;
 unsigned int konz2;
 unsigned int konz3;
 unsigned int konz4;
 unsigned int vimage;
 char version[20];
}parameter;
funkioniert alles einwandfrei.
Wie kann das sein?
[/c]

Autor: micro1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auh der rest meines Speicher spielt total verrückt.
Nur wenn ich alle miene Strings die ich in einer Struktur habe zum 
Schluss anlege dann läuft alles normal.
Warum?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Speicher voll, Stack übergelaufen ?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
initialisiere version mal mit 'init                '

Autor: micro1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
speicher ist laut gcc mit 6% belegt.

Autor: micro1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Upps.
Habe den Fehler gefunden. Ich habe auf ein Array einen Wert zuviel 
geschrieben.
Und ausgerechnet dort lag der Speiher der struktur.
Alles ok wieder.
Trotzdem danke

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.