variable wird wegoptimiert

(Firma: privat) #6748105
Lesenswert?

Hallo zusammen,
ich such schon die ganze Zeit, mein Atmelstudio haut mir immer wieder 
die String-Variablen weg

Einfaches Beispiel:

void test(void)
{
  char zeit[5]="   ";
  zeit[2]=',';
  return;
}

Warning    variable 'zeit' set but not used [-Wunused-but-set-variable]

Nach all dem..
https://www.mikrocontroller.net/articles/String-Verarbeitung_in_C
Ich versteh das nicht, was macht die Schicht 8 falsch?

Auch getestet:
volatile
__attribute__((unused));


Grüße Klaus
Gast #6748107
Lesenswert?

Klaus H. schrieb:
> ich such schon die ganze Zeit, mein Atmelstudio haut mir immer wieder
> die String-Variablen weg
> Einfaches Beispiel:
> void test(void)
> {
>   char zeit[5]="   ";
>   zeit[2]=',';
>   return;
> }
> Warning    variable 'zeit' set but not used [-Wunused-but-set-variable]
Wir wärs, wenn du die Variable einfach benutzt? Der Compiler verhält 
sich korrekt.
#6748110
Lesenswert?

Klaus H. schrieb:
> Hallo zusammen,
> ich such schon die ganze Zeit, mein Atmelstudio haut mir immer wieder
> die String-Variablen weg

Nö, das macht der compiler. Weil die Variable niemals gelesen, sprich, 
benutzt wird. Und WOM (write only memory) ist uncool.

> Warning    variable 'zeit' set but not used [-Wunused-but-set-variable]

Steht doch hier.

> Auch getestet:
> volatile
> __attribute__((unused));

Schmarn.
Gast #6748115
Lesenswert?

Zeit wird weg optimiert wäre klasse 🤣

Du erstellst die Variable in deiner Funktion
Beschreibst diese
Und springst wieder raus.

Die Funktion macht nichts und könnte ebenfalls weg optimiert werden.

Oder du verheimlichst einiges aus der Funktion
(Firma: egal) #6748128
Lesenswert?

Klaus H. schrieb:
> Ich versteh das nicht, was macht die Schicht 8 falsch?

Sie versteht die völlig zurecht ausgegebene Fehlermeldung nicht:-)
Du schreibst zwar Werte in deine Variabel Zeit, aber wärend deren 
Gültigkeitsbereich machst du danach nichts mehr sinnvolles damit.

So nebenbei, das "return" ist hier überflüssig, des denötigst du nur 
wenn du auch was zurückgeben willst.
Gast #6758377
Lesenswert?

Hallo,
wenn man SPI verwendet, dann muss man ja den Eingangspuffer lesen, um 
das Interupt Flag BF  (Buffer full) zu löschen.
Wenn der enthaltene Wert kann aber nicht benötigt werden, weil es Dummy 
ist.
Ich glaube einfaches lesen der Hardwareregisters auf eine Variable wird 
dann auch wegoptimiert.....
Sollte man die Variable als volatile deklarieren ?

Was ist der richtige Weg, um den Puffer wieder frei zu kriegen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren