Verfasst: 11.11.2007 13:52
Macros wernden vom Compilr vor dem Kompilieren durch ihren Inhalt ersetzt. Den Satz würde ich als Anfänger (nicht böse gemeint!) selbst nicht verstehen, also erklär ichs dir mal.
Prozeduren:
Eine Prozedur ist eine Möglichkeit, oft benutze Routinen zu bündeln und als Prozedur abzuspeichern. So kannst du bequem den Befehl aufrufen und immer wird diese Routine ausgeführt. Spart Tipparbeit und hat noch einige programmtechnische Vorteile.
Macros:
Macros sind (nur) dazu da, Tipparbeit zu sparen. Sie sind nicht als Prozedur zu verstehen, denn Prozeduren haben z. B. einen eigenen Namensraum (Variablen, die Protected sind). So kann es in einer Prozedur eine Variable 'a' geben, obwohl es diese Variable bereits Global im Hauptprogramm gibt. Bei Macros dagegen wird der Inhalt eines Macros ja an jeder Stelle im Code eingesetzt, an der er aufgerufen wird:Du schreibst also an jeder Stelle bequem "zufall()" und der Compiler erweitert den Code. Für den Compiler sieht der Code im Endeffekt so aus, bevor er ihn kompiliert:OK, das ist kein wletbewegendes Beispiel, ein besseres fällt mir aber gerade nicht ein.
Dadurch, dass Makros im Code eingesetzt werden, wird der Code schneller ausgeführt, denn der Computer muss hinterher bei der Ausführung eines Programms nicht erst an die Stelle im Programm springen, wo die Prozedur steht.
Macros werden wie Prozeduren deklariert, sie können sogar keinen Parameter haben und das sieht dann so aus:
Mit Macros kannst du PureBasic theoretisch sogar auf Deutsch übersetzen:Klick hier, um den Thread zu sehen, in dem ich PureBasic mal auf Deutsch "übersetzt" habe...
[/url]

Prozeduren:
Eine Prozedur ist eine Möglichkeit, oft benutze Routinen zu bündeln und als Prozedur abzuspeichern. So kannst du bequem den Befehl aufrufen und immer wird diese Routine ausgeführt. Spart Tipparbeit und hat noch einige programmtechnische Vorteile.
Macros:
Macros sind (nur) dazu da, Tipparbeit zu sparen. Sie sind nicht als Prozedur zu verstehen, denn Prozeduren haben z. B. einen eigenen Namensraum (Variablen, die Protected sind). So kann es in einer Prozedur eine Variable 'a' geben, obwohl es diese Variable bereits Global im Hauptprogramm gibt. Bei Macros dagegen wird der Inhalt eines Macros ja an jeder Stelle im Code eingesetzt, an der er aufgerufen wird:
Code: Alles auswählen
Macro zufall(min, max)
(Random(max+min)-min)
EndMacro
Debug zufall(1, 10)
For n=1 To 5
hallo=hallo+zufall(7, 21)
Debug hallo
Next
Debug zufall(1, 100)*(zufall(0, 1)+zufall(0, 1))+1000-500+250-750
Code: Alles auswählen
Macro zufall(min, max)
(Random(max+min)-min)
EndMacro
Debug (Random(10+1)-1)
For n=1 To 5
hallo=hallo+(Random(21+7)-7)
Debug hallo
Next
Debug (Random(100+1)-1)*(Random(1+0)-0)+(Random(1+0)-0))+1000-500+250-750
Dadurch, dass Makros im Code eingesetzt werden, wird der Code schneller ausgeführt, denn der Computer muss hinterher bei der Ausführung eines Programms nicht erst an die Stelle im Programm springen, wo die Prozedur steht.
Macros werden wie Prozeduren deklariert, sie können sogar keinen Parameter haben und das sieht dann so aus:
Code: Alles auswählen
Macro parameterlos
Debug "ja, was soll ich denn hier?"
EndMacro
parameterlos
parameterlos
Mit Macros kannst du PureBasic theoretisch sogar auf Deutsch übersetzen:
Code: Alles auswählen
Macro Wenn
If
EndMacro
Macro Ansonsten
Else
EndMacro
Macro EndeWenn
EndIf
EndMacro
Macro und
And
EndMacro
a=6
Wenn a=5 und 1=1
Debug "a ist gleich 5"
Ansonsten
Debug "a ist <> 5"
EndeWenn
