AVR-GCC und komplexere Anweisungen

Gast #77273
Hi,
wieso baut mein gcc bei volgender anweisung mist:
bufPoint++ |= ((PRG_RDB(&f6x8[*(++stringPoint)][z]))<<6);

aber nicht bei folgender:

x = *(++stringPoint);
*bufPoint++ |= ((PRG_RDB(&f6x8[x][z]))<<6);

Die muessten doch gleichertig sein oder?

(alle datentypen sind unsigned char bzw. pointer darauf(bufPoint
stringPoint))

Hat mich ne Menge Zeit gekostet bis ich darauf gekommen bin alle
Anweisungen die nach diesem Schema aufgebaut waren in 2 zu splitten.

Tobias
Gast #77274
Hi

einmal hast du

bufPoint++ |=....

und einmal

*bufPoint++ |=...

Ersteres dürfte der Compiler garnicht compilieren da an bufPoint
zweimal ein Wert zugewiesen wird.

Matthias
#77275
Dazu würde ich grundsätzlich immer raten.

Wenn eine Anweisung zu komplex ist, daß ich selber nicht mehr
durchsehe, dann teile ich sie in 2 oder mehr Zeilen auf.

Oft wird dadurch der erzeugte Code sogar kürzer und schneller.
D.h. auch Compiler mögen keine zu komplexen Ausdrücke.


Peter
#77277
"Müssen" muß nur Compiler und zwar immer den richtigen Code draus
machen, wenn der Ausdruck syntaktisch korrekt ist.


Der einzige Grund, um mehr oder weniger komplexe Ausdrücke zu
schreiben, ist allein, daß man den Code auch selber versteht und das
auch noch nach Jahren, wenn man mal wieder einen Blick drauf wirft.


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.