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; }
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?
Ich hätte erwartet, dass GCC 4.x mit -fwhole-program -funit-at-a-time die Zuweisung entfernt, aber selbst da passiert es nicht.
@ Karl ..absichtlich macht das keiner - aber irren ist menschlich - daher wäres nett, wenn der Compiler das bemerkt - aber ok - habs so verstanden .....
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.