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


von micro1 (Gast)


Lesenswert?

Hallo,

ich glaube ich habe einen Bug entdeckt im gcc.
Und zwar habe ich folgende Struktur:
1
typedef struct
2
{
3
 char version[20];
4
 unsigned int druck1;
5
 unsigned int druck2;
6
 unsigned int konz1;
7
 unsigned int konz2;
8
 unsigned int konz3;
9
 unsigned int konz4;
10
 unsigned int vimage;
11
}parameter;

version wird mit "init" initialisiert.

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

von micro1 (Gast)


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?

von Benedikt K. (benedikt)


Lesenswert?

Speicher voll, Stack übergelaufen ?

von Stefan (Gast)


Lesenswert?

initialisiere version mal mit 'init                '

von micro1 (Gast)


Lesenswert?

speicher ist laut gcc mit 6% belegt.

von micro1 (Gast)


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

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.