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)
??? Bild

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 :lol:

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.