Seite 1 von 1
[PB 4.20 B2] Macro-Bug (Macro-Name in Macro verwenden)
Verfasst: 25.02.2008 17:47
von Leonhard
Hier erst mal der Code:
Code: Alles auswählen
Macro Array(Datatype)
Array#Datatype
EndMacro
Define *array.Array(b)
Sollte nicht PureBasic, trozt ich den Macro-Namen im Macro verwende, die Funktion des #-Zeichens (verketten zweiter Token) im Macro ausführen?
Auf gut deutsch: Warum übersetzt das Macro den Code nicht so, wie als wenn ich den Macro-Namen z.B. auf "m_Array" stelle?
Verfasst: 25.02.2008 18:03
von #NULL
ich würde sagen bug.
mit 'endless recursivity' hatt es ja auch nix zu tun.
Verfasst: 25.02.2008 18:16
von Fluid Byte
Code: Alles auswählen
Macro Array(Datatype)
Datatype
EndMacro
Define *array.Array(b)
???

Verfasst: 25.02.2008 18:31
von STARGÅTE
du meinst warum das hier:
Macro Array(Datatype)
Array
#Datatype
EndMacro
Define *array.Array(b)
nicht das gleiche ist wie das hier
Macro AArray(Datatype)
Array
#Datatype
EndMacro
Define *array.AArray(b)
einmal kommt *array.Arrayb raus und
beim andere *array.Array#b
hmm jo ich denke mal BUG aber du solltest trotzdem vermeiden das Macros gleich Variablen, Structuren, oder andere Wörter sind , wenn du so eine Art fehler vermeiden willst
EDIT
Dann mach es halt so:
Code: Alles auswählen
Macro MyArray
Array
EndMacro
Macro Array(Datatype)
MyArray#Datatype
EndMacro
Define *array.Array(b)
Verfasst: 25.02.2008 18:42
von Fluid Byte
Ich steh gerade komplett aufm Schlauch ...
PS: Der Code geht immer noch nicht
Verfasst: 25.02.2008 19:29
von Leonhard
Ich habs jetzt geändert, so das es funktioniert (statt 'Array' einfach 'Array_' im Macro, hab das im Prog halt umgeschieben).
Trotzdem ist so ein Fehler schon mal nen grund zum mekkern

Verfasst: 25.02.2008 19:34
von Kaeru Gaman
der Fehler besteht darin, dass du keine Compiler-Fehlermeldung bekommst.
eigentlich sollte das garnicht angenommen werden, weil Macros von ihrer Natur her nicht rekursiv sein können.