Wie stelle ich die Optimierung ein, dass...

Gast #438455
Lesenswert?

dieses foo=4 wegoptimiert wird ( oder erwarte ich da zuviel ??? )

#include <avr/io.h>


 uint8_t foo;

int main(void)
{
    /* Setzt das Richtungsregister des Ports A auf 0xff
       (alle Pins als Ausgang): */
    DDRB = 0xff;
 foo = 4;
    /* Setzt PortA auf 0x03, Bit 0 und 1 "high", restliche "low": */
    PORTB = 0x03;

}
#438473
Lesenswert?

Das kann der Compiler nicht wegoptimieren, da es sich bei foo
um eine globale Variable handelt.

Der Compiler hat keine Möglichkeit festzustellen, ob es nicht
irgendwo eine 2te 'Compilation Unit' (ein 2tes C-Source Code
File) gibt, dass sich mittels

   extern uint8_t foo;

Zugang zu dieser Variablen verschafft und auf ihren Wert angewiesen
ist.

Wenn du eine Variable nicht brauchst warum legst du sie
dann an?

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