Ist das erst einmal so grundsätzlich richtig verstanden und der Anfang
richtig?
Wie würde man denn dann bei der zweiten Funktion das alles in die
Hilfsvariable packen?
Gruß am Sonntag
Das 2. Makro kannst du nicht umschreiben. Es gibt nämlich nicht einen
Wert zurück, sondern 2 getrennt per Komma.
Das kann eigentlich nur für eine Funktion nützlich sein. Das Komma als
Operator verwirft alle Audrücke bis auf den Letzten.
Um das dennoch in eine Funktion zu packen, müsste man ein bisschen mehr
als nur die Defines umschreiben.
Das MAkro ersetzt den Code mit dem seinen. Das geschieht jedoch bei der
Compilierung. Funktionen werden zur Laufzeit ausgeführt! Für so etwas
ist das Makro genau richtig. Warum möchstet du denn eine Funktion haben?
Das ist Makroeinsatz, so wie er gedacht war: Clevere Editoranweisungen,
so dass der Editor (der Präprozessor) den Code so erzeugt, wie ihn der
Programmierer haben will.
Hallo,
also die Makros dienen einfach dazu, den Code zu vereinfachen, weil man
sonst wer weiß wieviel Code hätte, um
1
unsignedcharTab[]={...
zu füllen und somit den gesamten Code übersichtlicher zu machen. Das
ist also quasi eine codesparende Programmierung?
Ich wollte nicht unbedingt eine Funktion haben, ich dachte halt nur,
dass man das besser verstehen kann, wenn man das in eine Funktion
umschreibt. Ich wusste aber nicht, dass durch die Makros halt an
entsprechender Stelle schon beim Kompilieren qasi ersetzt wird.
Vielen Dank!
Gruß
Steffen schrieb:> also quasi eine codesparende Programmierung
Sieh es als Codegenerierung an. Sparen im Sinne von CodeSpace tut man
nix, der wird eh ersetzt bevor der Compiler ran darf.
Vor allem wird so verhindert das man etwas falsch macht (Tippfehler)
oder etwas wegläßt. Außerdem kann der Compiler die Konstanten so
vor-berechnen, bei einem Funktionsaufruf kann dies (meistens) nicht
geschehen.
Velen Dank.
Ich werde mir das mit den Makros und dem Compilerlauf usw. nochmal
allgemein ansehen, um mic da mal noch etwas einzuarbeiten.
Vielen Dank!
Grüße
Steffen schrieb:> umschreibt. Ich wusste aber nicht, dass durch die Makros halt an> entsprechender Stelle schon beim Kompilieren qasi ersetzt wird.
Das ist ein gängiges Missverständnis.
Sieh den Präprozessor als eine Art Editor, also das Teil, mit dem du
deinen Code in Textform schreibst. Du bedienst deinen Editor manuell, in
dem du zb manuell die Funktion "Suchen und Ersetzen" aufrufst und die
entsprechenden Angaben in einer Dialogbox machst.
Der Präprozessor ist im Grunde auch nichts anderes als so ein Editor.
Nur gibst du die Kommandos nicht interaktiv/manuell sondern du schreibst
die Anweisungen trickreicherweise in den Text selber hinein und der
Präprozessor holt sie sich von dort und führt sie aus indem er den
nachfolgenden Text entsprechend den Anweisungen verändert.
Etwas vereinfacht gesagt, ist das was du mit "Suchen und Ersetzen"
manuell machst in Präprozessor Syntax ein
1
#define Suchtext Ersetzungstext
direkt im Quelltext. Die Details sind ein wenig trickreicher aber im
Grunde ist das genau das (Das Suchen und Ersetzen) was ein Makro macht.
Hallo,
vielen Dank! Sehr einleuchtend und anschaulich erläutert.
Vielen Dank! Ich glaube, da hab ich noch ein wenig was zu tun.....also
zu lernen :)
Gruß