Gast
#177318
Hallo alle zusammen. Nachdem ich mich jetzt ein bißchem mit dem MSPGCC beschäftigt habe und sehr zufrieden bin, hab ich doch noch eine kleine Frage. Wie verhält sich der Compiler eigentlich bei "verschatelten" #define-Anweisungen? Ich meine sowas... #define clock 3500000 #define freq (clock * 0.05) wenn ich jetzt "freq" irgendwo verwende, ersetzt das dann schon der Präprozessor mit dem endgültigen Wert oder nur mit dem Ausdruck "(3500000 * 0.05)"? Und was macht der Compiler, wenn ich sowas in den Quelltext schreiben würde? Also generell bei Ausdrücken, die nur aus Konstanten bestehen? Man könnte ja auch sowas machen: #define steps 20 ... if (i < steps+10)... Mir geht es eben darum, ob es auch in solchen Fällen effizient ist, mit #define zu arbeiten, oder ob es da eventuell doch gewisse Konstrukte gibt, die dann die Laufzeit-Performance bzw. das kompilierte Endprodukt beeinträchtigen. Ein Blick in den "ausgegebenen" Assemblercode ließ mich ja vermuten, dass entweder Präprozessor oder Compiler da recht intelligent zu Werke gehen und das immer gleich durch die entsprechende Konstante ersetzen. Ist das aber immer so? Vielen Dank schonmal. Gruß, der Newbie Karsten